【发布时间】:2012-01-25 06:20:13
【问题描述】:
我有一个使用 Spring 和 Hibernate 的应用程序。在我的数据库中,我需要在某些实体中加载一些视图。所以我正在尝试执行本机查询并使用从视图中检索到的数据加载类:
//In my DAO class (@Repository)
public List<MyClass> findMyEntities(){
Query query = em.createNativeQuery("SELECT * FROM V_myView", MyClass.class);
return query.getResultList();
}
并且 MyClass 具有与视图的列名相同的字段。
问题是Hibernate无法识别MyClass,因为它不是一个实体(它没有用@Entity注解)
org.hibernate.MappingException: 未知实体
如果我将 MyClass 作为一个实体,系统将尝试为该实体创建/更新一个表,因为我已经配置了它:
<property name="hibernate.hbm2ddl.auto" value="update"/>
所以我提出了这些问题:
- 我可以为单个实体禁用“hibernate.hbm2ddl.auto”吗?
- 有没有办法将视图中的数据加载到非实体类中?
- 如果不是,那么在我的情况下,将数据从视图加载到休眠中的类中的最佳方法是什么?
谢谢
【问题讨论】:
-
FWIW,其他 JPA 实现支持不是实体的结果类,而 JPA 2.0 规范只对实体类型只字未提。
标签: java hibernate jpa view entity