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

相关推荐
lhldsg1 小时前
AI零售系统实战指南:从架构设计到落地部署全解析
java·人工智能·小程序·uni-app·零售
Interview Aid1122 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
mldong2 小时前
换了工作流引擎,前端一行代码没改
java·架构
微尘寒风9 小时前
【Git】的安装和使用
java·git
y = xⁿ10 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
侧耳倾听11110 小时前
jwt使用简介
java·jwt
顶点多余11 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI人工智能+电脑小能手11 小时前
大白话说Java设计模式-46-责任链模式(业务实战篇)
java·设计模式·责任链模式·风控校验·servlet filter·spring interceptor·链式处理
jay神11 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
2601_9620664912 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库