performance - 如何使用 Hibernate 正确获取嵌套的惰性集合
问题描述
在@PostConstruct
方法中,我获取与集合之一连接的父实体并使用 初始化其余实体Hibernate.initialize(obj)
,但其中一些具有我也需要获取的关系。
Person person = /** SELECT Person JOINING WITH ADDRESS, CITY AND THE REST **/
Hibernate.initialize(person.getEmails());
现在我必须初始化 Collection @OneToMany Phones(),但在 Phones() 中我有 PhoneType 实体:
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "tipo_id", nullable = false)
private PhoneType type;
如果我只是 Hibernate.initialize(person.phones()),则不会加载类型。
我在其他主题中找到了一个“解决方案”:https ://stackoverflow.com/a/47611257/8107849
即初始化phones() 和forEach allphone() 初始化类型,像这样:
Hibernate.initialize(person.getPhones());
person.getPhones().forEach(phone -> Hibernate.initialize(phone.getType()));
但是分析查询时,它给了我一个 getPhones() 查询和一个针对不同 Type() 的查询。就我而言,有五个查询。
有没有办法通过一个查询来获取这种情况?
提前致谢
解决方案
推荐阅读
- android - android应用程序显示空白屏幕而不是书单
- jenkins - 如何在jenkins groovy中覆盖全局变量
- amazon-web-services - CloudWatch 模板 - 带有冒号的指标过滤器
- sql - Hive SQL:查找用户最后一次进入的时间
- python - 如何使用 Pandas 过滤定界变量
- sql - 按 SQL 短日期排序
- java - 在杰克逊中使用没有自定义 JsonDeserializer 的原始值构造函数反序列化 json
- python - Python:未定义名称“set_password”
- arrays - Powershell:从整数数组中查找特定数值的出现次数
- forms - 将父实体 ID 传递给子表单