在@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所有phone()初始化类型,如下所示:
Hibernate.initialize(person.getPhones());
person.getPhones().forEach(phone -> Hibernate.initialize(phone.getType()));
但是在分析查询时,它给了我一个getPhones()查询和每个不同Type()的一个查询。就我而言,有五个查询。
有没有办法用一个查询来获取这种情况?
提前致谢