2017-08-21 17 views
0

私は、ORACLE関数をJPAのエンティティにマップする方法を理解するために1日をかけました。後で、それはテーブルと同じように動作することがわかった。ORACLE関数からエンティティへのマッピング

私のエンティティは次のようになり、

@Entity 
@Table(name = "DUAL", schema = "pfunc") 
public class SystemSettings implements Serializable{ 


    private String setting1; 
    private String setting2; 
    private String setting3; 
    ... 
} 

は今、私のエンティティSystemSettingsに私はORACLE機能SYS_SETTINGSから値を取得するために、すべてのプロパティフィールドsetting1,setting2,setting3,..をしたいです。

私はこのような何かを行うことができます単純なクエリで

、プロパティsetting1の値を設定しますselect pfunc.SYS_SETTINGS(100) from DUALは、同様に私はSYS_SETTINGS(?)に与えられた入力に基づいて、複数の のプロパティを設定します。

JPAエンティティで直接達成できますか?

はいの場合はどうですか?そうでない場合は、代替手段は何ですか。

ありがとうございます!

+0

**それをシンプルに保つ:dual'はORACLEのテーブルである 'ので**あなたは'(名前= DUAL'を必要としない簡単な方法で記述することです。 'select pfunc.SYS_SETTINGS(100)settings1、pfunc.SYS_SETTINGS(200)settings2、pfunc.SYS_SETTINGS(300)settings3をDUAL'から' PreparedStatement'を使用し、 'while'ループで* ResultSet *を読み取るメソッドです。 –

答えて

0

はい、エンティティフィールドの名前がクエリまたは関数で選択されたフィールドのエイリアスと一致する場合、自動的にマップされ、エンティティを型キャストなしの結果として使用できます。単に

このような何か:

@Column(name="STR_1") 
String str1; 
@Column(name="STR_2") 
String str2; 

List<YourEntity> results = getSession().createSqlQuery("select foo as Str_1 , bar as Str_2 from your_table").list(); 
関連する問題