用于视图的 JPA 实体包含连接和别名

Posted

技术标签:

【中文标题】用于视图的 JPA 实体包含连接和别名【英文标题】:JPA Entity for View containig joins and aliases 【发布时间】:2022-01-19 13:37:15 【问题描述】:

我有以下查询,我想使用它为我从查询中检索的列创建一个实体类。

select e.emp_id,
       c.company_code,
       mg.emp_id as mangaer_code
from employee e
         left join company c on e.emp_id = c.emp_id
         left join manager mg on e.emp_id = c.emp_id = mg.emp_id

如何从这些列创建实体类,需要哪些变量在实体类中引用这些列?

【问题讨论】:

为 intelij 安装 jpa buddy 插件它将帮助您创建实体模型,您需要改进表之间的关系问题,它们是一对一、一对多、可能对多?我猜每个表需要 3 个实体类 由于您没有提供列的类型,因此没有人可以真正帮助您,请提供更多信息 你需要一个实体类吗?它不像你可以通过实体对数据执行写操作,所以不需要管理它。查看 JPA 中的构造函数查询 - 您可以从数据构建任何 java 对象并从查询返回,而不必对其进行实体映射 - 它只需要一个接受值的构造函数。 您需要提供有关如何运行此查询的更多信息。它看起来像原生 SQL?你正在用 Hibernate/JPA 运行它吗?如果是,也许你可以看看这些答案:ONETWO 【参考方案1】:

View 是基于 SQL 语句或函数的结果集的虚拟表,JPA 将其视为常规表。创建实体并使用 JPA 注释,如下所示

@Entity
@Immutable
@Table(name = "employee_view")
 public class EmployeeView

//define the required columns from view here



更多详情可以参考我找到的这篇文章https://medium.com/@jonathan.turnock/exposing-subset-view-of-the-database-with-a-jpa-repository-over-rest-5b9d6e07344b

【讨论】:

以上是关于用于视图的 JPA 实体包含连接和别名的主要内容,如果未能解决你的问题,请参考以下文章

后端数据库异步更改时如何刷新JPA实体?

如果连接列不包含某个值,JPA 标准构建器仅返回实体

使用连接的 Spring Data JPA 规范的不同结果

Spring Data JPA 多个实体类表联合视图查询

在 JPA/Hibernate 中持久化映射到 MySQL 视图的实体

IDEA生成JPA实体类