hibernate - JPA/HIBERNATE 处理非 POJO 实体

标签 hibernate jpa persistence hql pojo

我有三个类(class)。 ClassA 和 ClassB 是映射到数据库中的经典 POJO 实体。我想要第三个 ClassC 使用 HQL 在数据库中执行特定且复杂的查询(未映射到任何表)。是否可以在 ClassC 上添加 @Entity 注释并将其保留为只读?

我正在阅读文档以找出映射以下(示例)sql 语句的方法:

select 
 a.id, b.name, c.city
from
 emp a, identity b, address c
where
 a.id = b.id and a.id = c.id

不想为 emp、身份和地址创建域对象和映射。

我只想要一个对象,映射到 sql 语句的输出。

public class Data {
 private int id;
 private String name;
 private String city;
 // ... and other details ...
}

从技术上讲,这应该是存储过程或 View 的工作。不幸的是,我无法更改数据库。

如有任何帮助/指点,我们将不胜感激。

最佳答案

您可以将非常复杂的 SQL 查询创建为 View ,并将您的实体映射到该 View 。基本上, View 只是一个只读表(您可以在 Oracle 中将其设置为可读写,但那是另一回事:))因此任何 hibernate 映射都可以作为只读实体正常工作。我以前做过,但几年前使用普通的 Hibernate 和 hbm 文件。我从未尝试过使用 JPA 或注释,但我不明白为什么它不起作用。

关于hibernate - JPA/HIBERNATE 处理非 POJO 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130827/

相关文章:

java - Hibernate Envers仅使用servlet保存用户名

postgresql - 如何减少查询时间

java - JPA Spring Repository 中的 Group By 之前的排序

hibernate - 在 JPA/Hibernate NamedQuery 中指定数据库函数

JPA:在非 id 列上使用 @GeneratedValue

ios - 什么时候应该使用 iOS 中的各种存储机制?

java - Hibernate 将时间戳映射为可序列化

java - MySql 表列中未设置默认值

testing - 持久化复杂的测试数据

java - hibernate/JPA : Is it possible to retrieve heterogeneous entities in a single query?