JPA / HIBERNATE处理非POJO实体

时间:2014-09-30 21:58:34

标签: hibernate jpa persistence hql pojo

我有三节课。 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 ...
}

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

任何帮助/指针将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以将非常复杂的SQL查询创建为视图,并将您的实体映射到该视图。基本上,视图只是一个只读表(您可以将其作为Oracle中的读写,但这是另一个故事:))因此任何hibernate映射都可以作为只读实体正常工作。我之前使用普通的Hibernate和hbm文件已经完成了这项工作。我从未尝试使用JPA或注释,但我不明白为什么它不起作用。