2

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

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

您甚至如何调用存储过程?

这是我想做的示例查询...

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

结果将映射到该实体...

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 标准中有什么可以帮助我吗?

4

1 回答 1

2

如果不需要数据库中的结果进行进一步操作,仅用于预览,您可以考虑使用数据库视图或结果类构造函数表达式


如果需要从数据库中检索的实体进行进一步操作,您可以使用多个选择表达式瞬态字段

  1. 将 @Column 注释替换为父 ID 上的 @Transient 注释。
  2. 从数据库中检索多个列后,迭代结果并手动设置 parentID。
于 2012-07-13T12:12:54.423 回答