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

相关推荐
消失的旧时光-19436 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP6 小时前
Redis--发布订阅命令和Redis事务
java
PAC_3Dame6 小时前
记一次真实的线上OOM
java
SunnyDays10116 小时前
如何在Java中将Word文档转换为图像(JPEG、PNG或SVG)
java
Lumos_7776 小时前
Linux -- 线程
java·jvm·算法
知兀7 小时前
【MybatisPlus】后端用枚举类,数据库用tinyint,存在枚举类型转换
java
StockTV7 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
User_芊芊君子7 小时前
【OpenAI 把 AI 玩明白了】:自主推理 + 动态知识图谱,这 4 个技术突破要颠覆行业
java·人工智能·知识图谱
c++之路7 小时前
C++20概述
java·开发语言·c++20
Championship.23.247 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试