我有一个JPA实体,我将其用作本机查询的结果类。因此,该实体本身无效(因为它没有表格)。我使用Hibernate 4.1.x作为我的JPA提供程序,它在启动期间执行模式验证,因此失败(我没有指定显式表):
org.hibernate.HibernateException: Missing table: MyEntity
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1272)
[...]
有没有办法只关闭单个实体的模式验证(使用JPA或hibernate注释或更改persistence.xml)?
编辑:我完全可以避免使用任何实体作为结果,但是Hibernate将返回List<Object[]>
作为查询结果,这在技术上有效,但使用起来有点难看:
Query query = entityManager.get().createNativeQuery("SELECT node, last_update FROM mm_repl_monitoring.my_mm_nodes");
List<Object[]> statuses = query.getResultList();
换句话说:如果有一些映射支持甚至可以用于映射到非实体类的本机查询,那就太好了。
答案 0 :(得分:0)
我不确定为什么要将该类注册为实体:它是一个自定义类,因此它不必附加也不必与hibernate / jpa会话分离。
答案 1 :(得分:0)
对我有用的解决方案是从hibernate.hbm2ddl.auto
中移除persistence.xml
属性。当然,这会禁用所有其他实体的架构验证,但我无法在JPA 2.0中找到其他内容。