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

相关推荐
凯尔萨厮2 小时前
创建SpringWeb项目(Spring2.5)半注解
spring·mvc
砍材农夫2 小时前
spring-ai 第八模型介绍-图像模型
java·人工智能·spring
rrrjqy2 小时前
深入浅出 RAG:万物皆可向量化 (Embedding) 与 Spring AI + pgvector 实战
人工智能·spring·embedding
橘子hhh2 小时前
Netty基础服务器实现
java·nio
墨雪遗痕2 小时前
工程架构认知(二):从 CDN 到 Keep-Alive,理解流量如何被“消化”在系统之外
java·spring·架构
用户6688599847663 小时前
Sprint Boot登录案例
java
鬼先生_sir3 小时前
SpringCloud-Sentinel(熔断降级 & 流量控制)
spring·spring cloud·sentinel
Ivanqhz3 小时前
LLVM IR 转 SMT公式
java·开发语言
一个心烑3 小时前
奖项届定获取方式
java