2017-08-21 105 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();