エンティティに特定のインターフェイスを実装させたいのですが、これはIDを返します。
public interface IdentifiableEntity<T extends Comparable<T>> {
public T getIdentifier();
}
しかし、そうしてエンティティが遅延ロードされた場合getIdentifier()
、プロキシを初期化します(そして別の選択を引き起こします)。エンティティの例を次に示します。
@Entity
public class AppFile implements IdentifiableEntity<Long> {
@Id
@GeneratedValue
private Long id;
public Long getIdentifier() {
return id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
...
}
getIdentifier()
既知のIDにのみアクセスし、プロキシを初期化する必要がないことをHibernate / JPAに伝える方法はありますか?
私がすでに知ったこと:
- すべてのフィールドで
getId()
はなくプロパティ(ゲッター)に注釈を付けると、プロキシが初期化されません。 - それを使用
@Access(AccessType.PROPERTY)
するprivate Long id;
と、プロパティレベルですべてに注釈を付ける必要なしに1.として動作します。
更新: 1。と2.の両方がまだ私の要件を満たしていません。
getIdentifier()
プロキシ初期化なしでIDを返します- フィールドの
id
名前は変更されません(既存のJPQLステートメントが多数あるため)。