2

たとえば、@ManyToOne(fetch=Lazy)フィールドが「チーム」のエンティティ「ユーザー」があります。私はentityManager.find(User.class, userId)ユーザーを取得するために使用しました。この時点で、私が呼び出すとuser.getTeam()、クエリがデータベースに送信され、チームオブジェクトが取得されます。追加のクエリなしでチームIDを取得する方法はありますか?

4

2 に答える 2

4

これらの目的のために、私は列を2回マップします。insert="true"と1対1の場合update="true"

次に、TeamIdプロパティを追加し、intinsert="false"および。としてマップしますupdate="false"columnマッピングの代わりに、を使用しますformula

TeamIdは、最初の選択後に使用可能になります。

于 2012-11-12T11:22:01.903 に答える
1

Hibernateを使用したくない場合は、ユーザーエンティティに@PostLoadメソッドを追加します。これにより、teamIdが設定されます。

  1. @TransientteamIdプロパティを追加します
  2. @PostLoadメソッドを追加します:

@PostLoadメソッドを追加します

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