【问题标题】:Mapping ORACLE function to Entity将 ORACLE 函数映射到实体
【发布时间】:2017-08-21 12:36:15
【问题描述】:

我花了一整天的时间来了解我们如何将 ORACLE 函数映射到 JPA 的实体。后来,我发现它的工作原理类似于表格。

我的实体看起来像这样,

@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 Entity 中实现吗?

如果是,如何?如果没有,还有什么选择。

提前致谢!

【问题讨论】:

  • 保持简单:您不需要(name=DUAL,因为dual 是ORACLE 中的一个表。简单的方法是编写一个使用PreparedStatementselect pfunc.SYS_SETTINGS(100) settings1, pfunc.SYS_SETTINGS(200) settings2, pfunc.SYS_SETTINGS(300) settings3 from DUAL 的方法,并在while 循环中读取ResultSet

标签: java oracle hibernate jpa


【解决方案1】:

是的,如果您的实体字段的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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多