【问题标题】:named native query and mapping columns to field of entity that doesn't exist in table命名本机查询并将列映射到表中不存在的实体字段
【发布时间】:2012-07-13 20:12:54
【问题描述】:

我有一个命名本机查询,我正在尝试将它映射到命名本机查询的返回结果。有一个字段我想添加到我的实体中,该字段在表中不存在,但它会存在于查询的返回结果中。我想这与存储过程相同......

如何在 JPA 中映射存储过程的返回结果?...

你如何调用存储过程?

这是我想要做什么的示例查询...

select d.list_id as LIST_ID, 0 as Parent_ID, d.description  from EPCD13.distribution_list d

Result 将被映射到该实体...

public class DistributionList implements Serializable {
    @Id
    @Column(name="LIST_ID")
    private long listId;

    private String description;

    private String owner;

    private String flag;

    @Column(name="PARENT_ID", nullable = true)
    private long parentID;
}

父 ID 不在我数据库的任何表中。我还需要再次将此实体用于其他调用,与此调用无关,并且不需要此 parent_id? JPA 标准中有什么可以帮助我吗?

【问题讨论】:

  • 以后需要对检索到的实体进行操作吗?
  • 我基本上只是把它扔给用户。

标签: jpa


【解决方案1】:

如果不需要数据库中的结果进行进一步操作,仅用于预览,您可以考虑使用database view or result classes constructor expression


如果需要从数据库中检索的实体进行进一步操作,您可以使用multiple select expressiontransient fields

  1. 将@Column 注释替换为父ID 上的@Transient 注释。
  2. 从数据库中检索多个列后,迭代结果并手动设置 parentID。

【讨论】:

  • 我将循环的结果集是什么?我在想对象,但我认为这行不通...如何循环结果集。
  • @DmainEvent 结果取决于您使用哪种选择,请阅读我发布的上面的链接。可以是 Object[] 和 Tuple。
猜你喜欢
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多