我正在尝试在我的一个项目中更新hibernate / jpa,由于一些本地查询,导致大量测试崩溃。
例如,一个本地查询看起来像这样:
Query query = this.entityManager.createNativeQuery(
"select distinct c.* from company where ...."
Company.class);
正是在这一点上,这会在org.hibernate.internal.AbstractSharedSessionContract#handleNativeQueryResult处产生NullpointerException:
} else if ( this.getFactory().getMetamodel().getEntities()
.stream()
.anyMatch( entityType -> entityType.getJavaType().isAssignableFrom( resultClass ) ) ) {
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
}
getEntities()
似乎包括所有表的表示,不仅包括“真实”实体,还包括n-m表和历史记录表(反面)。
这些n到m或envers表没有代表JavaType(javaType为null),这使得entityType.getJavaType().isAssignableFrom
产生NullPointerException。
如何解决此问题?