Spring data jpa one to one / many to one : fetch 无效,懒加载无效 ?

表一 :

public DD
    /**
     * 蓝牙
     */
    @OneToOne(mappedBy = "d",fetch = FetchType.LAZY )
    private BB b;
    
   

表二 :


public BB

 @OneToOne
    private DD d;

查询 dd 的时候会把 bb查询出来。坑爹 ? 这是什么原因 ?

阅读 5.9k
1 个回答

不是坑爹,而是hibernate确实不支持one-to-one的lazy。hibernate在碰到lazy的时候,实际上是实现了个代理类,比如针对set和list这样的接口类型(在one-to-many的时候),它实现个代理set、代理list。这个代理类在被真正访问自己的方法如size、get的时候才会去数据库查询。

而one-to-one都是实打实的类,不是set或者list这种接口,所以lazy搞不定。具体可参考这篇文章

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进