JPA/Hibernate中一对一关联时不持有外键方的属性延迟加载为什么不生效?

问题

现在有2个实体:AuthorContact,关系是一对一,Contact表负责维护关联关系,如图:

实体定义如下:

  • Author
java 复制代码
public class Author {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    @OneToOne(fetch = FetchType.LAZY, mappedBy = "author")
    private Contact contact;
}
  • Contact
java 复制代码
public class Contact {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String mobile;
    private String email;
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn( name = "author_id",referencedColumnName = "id")
    private Author author;
}

现在有一个需求,要根据authorId查询author,但是不需要把author关联的contact也查出来,虽然我们这里配置了延迟加载contact,但是实际查询的时候,还是把contact查出来了,如下:

java 复制代码
@Transactional(readOnly = true)
public AuthorVO getById(Long id) {
   return authorRepository.findById(id)
           .map(author -> new AuthorVO(author.getId(), author.getName()))
           .orElse(null);
}

SQL日志:

java 复制代码
Hibernate: select a1_0.id,a1_0.name from author a1_0 where a1_0.id=?
Hibernate: select c1_0.id,c1_0.author_id,c1_0.email,c1_0.mobile from contact c1_0 where c1_0.author_id=?

点击查看完整内容https://mp.weixin.qq.com/s/NCc_N-8tXjnUvTah35Ov9g

相关推荐
AI瓦力7 分钟前
技术分享 | 彻底解决图片“躺平”问题:Java 后端强制校准图片方向
java
武子康10 分钟前
Java-219 RocketMQ Spring Boot 集成指南:生产者与消费者实战
java·spring boot·分布式·kafka·消息队列·rocketmq·java-rocketmq
RainCityLucky14 分钟前
Java Swing 自定义组件库分享(七)
java·笔记·后端
小白|27 分钟前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
weixin_5129761732 分钟前
Java 面试宝典 Beta5.0
java
Ting-yu35 分钟前
Spring AI Alibaba零基础速成(5) ---- Memory(记忆)
java·人工智能·后端·spring
月落归舟37 分钟前
一文掌握Spring AOP:从入门到底层原理
java·后端·spring
QuZhengRong40 分钟前
【Luck-Report】缓存
java·前端·后端·vue·excel
XiYang-DING1 小时前
【Spring】SpringMVC
java·后端·spring
想学习java初学者1 小时前
SpringBoot整合GS1编码解码
java·spring boot·后端