例如,有一个实体“用户”,其中@ManyToOne(fetch=Lazy)
字段为“团队”。我用entityManager.find(User.class, userId)
来获取用户。此时,如果我调用user.getTeam()
,将向数据库发送查询以获取团队对象。有没有办法在没有额外查询的情况下获得团队ID?
答案 0 :(得分:4)
出于这些目的,我会将列映射两次。与insert="true"
和update="true"
一样多对一。
然后我追加 TeamId 属性并将其设为int insert="false"
和update="false"
。我使用column
。
formula
映射
第一次选择后,TeamId可用。
答案 1 :(得分:1)
如果您不想使用Hibernate,请在您的用户实体上添加@PostLoad方法,这将设置您的teamId
添加@PostLoad方法
@PostLoad
public void updateTeamIdInfos() {
if (getTeam() != null) {
setTeamId(getTeam().getId());
}
}