【问题标题】:JPA Entity for View containig joins and aliases用于视图的 JPA 实体包含连接和别名
【发布时间】: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

标签: java hibernate jpa spring-data-jpa


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多