从JPA/Hibernate中的View加载实体

Jav*_*avi 4 java entity hibernate jpa view

我有一个使用Spring和Hibernate的应用程序.在我的数据库中,我需要在某些实体中加载一些视图.所以我正在尝试执行本机查询并使用从视图中检索的数据加载类:

//In my DAO class (@Repository) 
public List<MyClass> findMyEntities(){
    Query query = em.createNativeQuery("SELECT * FROM V_myView", MyClass.class);
    return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

和MyClass具有与视图的列名相同的字段.

问题是Hibernate无法识别MyClass,因为它不是一个实体(它没有用@Entity注释)

org.hibernate.MappingException:未知实体

如果我将MyClass作为实体,系统将尝试为该实体创建/更新表,因为我已经配置了它:

<property name="hibernate.hbm2ddl.auto" value="update"/>

所以我提出这些问题:

  1. 我可以为单个实体禁用"hibernate.hbm2ddl.auto"吗?
  2. 有没有办法将视图中的数据加载到非实体类中?
  3. 如果没有,在我的情况下,将视图中的数据加载到hibernate类中的最佳方法是什么?

谢谢

Jho*_*han 7

放在你的班上

@Entity
@Immutable
@Subselect(QUERY)
public MyClass {....... }
Run Code Online (Sandbox Code Playgroud)

Hibernate执行查询以检索数据,但不创建表或视图.这样做的缺点是它只能用于读数.