たとえば、@ManyToOne(fetch=Lazy)
フィールドが「チーム」のエンティティ「ユーザー」があります。私はentityManager.find(User.class, userId)
ユーザーを取得するために使用しました。この時点で、私が呼び出すとuser.getTeam()
、クエリがデータベースに送信され、チームオブジェクトが取得されます。追加のクエリなしでチームIDを取得する方法はありますか?
2024 次
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が設定されます。
- @TransientteamIdプロパティを追加します
- @PostLoadメソッドを追加します:
@PostLoadメソッドを追加します
@PostLoad
public void updateTeamIdInfos() {
if (getTeam() != null) {
setTeamId(getTeam().getId());
}
}
于 2012-11-12T13:37:15.947 に答える