OneToMany阻止检查代理对象

时间:2017-08-17 14:49:26

标签: java spring hibernate jpa spring-boot

我正在尝试提高存储库方法的性能。我在我的一个实体UserEntity中有一个OneToMany关系,有一组懒惰加载的AddressEntities。

在AddressEntity中:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = EntityConstants.COLUMN_USER_ID, referencedColumnName = EntityConstants.COLUMN_USER_ID)
private UserEntity user;

在UserEntity中:

@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
private List<AddressEntity> addresses;

问题是当我获取AddressEntity时,也会向数据库查询用户表。据我所知,这是检查UserEntity的存在,并创建一个代理对象。

这需要时间,在这种情况下我对用户实体是否存在不感兴趣。有没有办法阻止hibernate做这个额外的查询,只是让userEntity为null?

提前致谢, 马库斯

1 个答案:

答案 0 :(得分:0)

我只选择了我需要的属性来解决这个问题:

SELECT ad.longitude, ad.latitude FROM AddressEntity ad

这不会导致hibernate检查未选中的关系上的代理对象。