2017-08-21 144 views
0

我已經投入了一整天的時間來了解如何將ORACLE函數映射到JPA的實體。後來,我發現它的工作原理與表格類似。將ORACLE函數映射到實體

我的實體看起來像這樣,

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


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

現在,在我的實體SystemSettings我希望所有屬性的字段setting1,setting2,setting3,..從Oracle功能SYS_SETTINGS獲得價值。

在簡單的查詢,我可以做這樣的事情,這select pfunc.SYS_SETTINGS(100) from DUAL財產setting1設置值,同樣我想基於給SYS_SETTINGS(?)輸入設置多個 屬性。

我可以直接在JPA實體中實現嗎?

如果是,如何?如果不是,還有什麼選擇。

在此先感謝!

+0

**保持簡單:**你不需要'(名稱= DUAL'因爲'dual'是Oracle表最簡單的方法是寫一個使用'PreparedStatement'的方法,該方法使用'從DUAL'中選擇pfunc.SYS_SETTINGS(100)settings1,pfunc.SYS_SETTINGS(200)settings2,pfunc.SYS_SETTINGS(300)settings3並在'while'循環中讀取* ResultSet *。 –

回答

0

是的,如果你的Column實體字段的名稱與在查詢或函數中選擇的字段的別名匹配,它將被自動映射,你可以使用你的實體作爲結果而不用進行類型轉換。

只是這樣的事情:

@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();