2017-08-15 17 views
0

Spring JPAでは、オブジェクトのTransientプロパティをエイリアスにマップすることは可能ですか?エイリアスへの一時プロパティのマッピング - Spring JPA

ネイティブクエリ

SELECT *, 1 AS liked FROM User WHERE user_id = 123 // + logic to determine if liked 

クラス

@Entity 
public class User { 

    @Id 
    private Long userId; 

    @Column(name = "displayName") 
    private String displayName; 

    @Transient 
    private int liked; // not tied to any column 

} 

私はこれを実装しようとしたが、likedはいつも、私はObject型としてフィールドを定義した場合、それは1(とnullにする必要があります0を返します。 )

助けてください!

+0

ゲッター、@PostLoadなどのソリューションを再マッピングすることはできますが、一般的に以前の設計上の問題があったようです。 JPAエンティティはデータベース行のオブジェクト式です(非常に簡素化、申し訳ありません)。自分で偽造してはいけません。 –

答えて

1

あなたはそれがデータベースからエンティティをフェッチするとき、Hibernateは実行されるSQLスニペットを提供するために、

@Formula注釈(the exampleを参照)フィールドの@Formulaアノテーションを使用する必要があります。 SQLスニペットの戻り値は、読み取り専用エンティティ属性にマップされます。

+0

私はこれについて知りませんでした。私が探しているものとまったく同じように聞こえます。ありがとう! –

+0

標準のJPAを使用している場合は、それがHibernate固有であり、ポスターが公開に失敗したため、それを知っていることはありません –

関連する問題