7

我有一个 JPA 实体,用作本机查询的结果类。因此,实体本身是无效的(因为它没有表)。我使用 Hibernate 4.1.x 作为我的 JPA 提供程序,它在启动期间执行模式验证并因此失败(我没有指定显式表):

org.hibernate.HibernateException: Missing table: MyEntity
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1272)
    [...]

有没有办法只为单个实体关闭模式验证(使用 JPA 或休眠注释或更改 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();

换句话说:如果有一些映射支持甚至可以用于映射到非实体类的本机查询,那就太好了。

4

2 回答 2

0

我不确定你为什么要将那个类注册为一个实体:它是一个自定义类,因此它不必从 hibernate/jpa 会话中附加或分离。

于 2012-07-26T12:55:33.793 回答
0

对我有用的解决方案是hibernate.hbm2ddl.autopersistence.xml. 当然,这会禁用所有其他实体的模式验证,但我在 JPA 2.0 中找不到其他东西。

于 2016-07-11T12:31:21.870 回答