2

例如,有一个实体“用户”,其@ManyToOne(fetch=Lazy)字段为“团队”。我用过entityManager.find(User.class, userId)获取用户。此时,如果我调用user.getTeam()查询将被发送到数据库以获取团队对象。有没有办法在没有额外查询的情况下获取团队 ID?

4

2 回答 2

4

出于这些目的,我确实映射了该列两次。insert="true"一次与和进行多对一update="true"

然后我附加一个TeamId属性并将其映射为 intinsert="false"update="false". 我使用的不是column映射formula

TeamId 在第一次选择后可用。

于 2012-11-12T11:22:01.903 回答
1

If you do not want to use Hibernate, add a @PostLoad method on you User entity, which will set your teamId

  1. Add a @Transient teamId property
  2. Add a @PostLoad method :

Add a @PostLoad method

@PostLoad
    public void updateTeamIdInfos() {
        if (getTeam() != null) {
            setTeamId(getTeam().getId());
        }
    }
于 2012-11-12T13:37:15.947 回答