我有以下实体:
员工[@Id Long id, String name, @OneToOne Address branchAddress, @OneToOne Address homeAddress]
Address [@Id Long id, String street, String City, String zipcode, Country 国家]
国家[@Id Long id, String name, String currency, String isoCode]
我的问题是当我尝试加载 Employee 时,大多数时候我不需要地址。 Fetching address 获取地址和后续国家。这些是每次加载员工时执行的额外查询。
我已经尝试制作 @OneToOne(FetchType.LAZY) 但没有用,它仍然提取不需要的信息。
如何避免获取复合对象?
我希望最终结果不包含 Address 对象,因为在 20 个场景中需要一次,我可以单独获取它们。
任何想法,如何实现这一目标。
谢谢
最佳答案
如果我们的 oneToOne 值不可为空,您可以通过添加 optional=false
来实现延迟加载:
@OneToOne(optional=false, fetch = FetchType.LAZY).
完美explained here .
关于java - hibernate ORM : How to avoid fetching @OneToOne mapped objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852302/