1
46
我也有同样的问题,通过
|
2
10
我有一个JavaEE 6应用程序,在GalasFISH上使用了Eclipse,创建了一些@ StistMeta模型类,所有的工作都很好。当我切换到JBoss7上的Hibernate4时,我也开始使用这些NPE。我开始调查,发现这个页面: http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/metamodel.html 它引用了JPA2规范第6.2.1.1节,该节定义了应该如何构建静态元模型类。例如,我通过阅读规范发现“不同包的选项将在本规范的未来版本中提供”。我在不同的包中使用了元模型类,它在EclipseLink上工作得很好,但是它是一个额外的特性,正如当前标准所指出的:
一旦我遵循了规范中的所有规则(以上只是一个总结,请参阅规范的第6.2.1.1节了解完整版本),我就停止获取异常。 顺便说一下,您可以在这里下载规范: http://jcp.org/en/jsr/detail?id=317 (点击“下载页面”获取最终版本,选择下载评估规范,接受协议并下载文件“SR-000317 2.0规范”-persistence-2_0-final-spec.pdf)。 |
3
8
我不能复制这个问题。我使用了你的一些实体(简化版
fwiw,这里是生成的SQL:
使用Hibernate EntityManager 3.5.6-Final、Hibernate JPAModelGen 1.1.0.Final在任何容器外进行测试。 我的建议是,首先尝试在JUnit测试环境中重现(如果可以重现)这个问题。 附言:我不会将生成的类存储在VCS中。
更新:
这里是一个
|
4
0
如果将模型和模型放在同一个包中不起作用,我会提供另一种解决方案。您需要将一个init()方法添加到构建sessionFactory或entityManager的类中:
因此,当您从主方法或单元测试运行应用程序时,需要调用
当你通过一个
信贷转到@can nsal,他在这个问题上解决了所有问题: Hibernate/JPA - NullPointerException when accessing SingularAttribute parameter |
5
0
仅供参考,我遇到了这样一个情况:Hibernate创建了一个元模型属性,但从未初始化它,导致
休眠生成
…它将初始化
繁荣 . |
6
0
类和元模型应该在同一个包中,即 文件夹实体:
我附上一个元模型代码的例子
|
7
0
如果上面的任何内容都不能解决这个NPE问题,您还可以检查是否在实体关系中使用列表而不是集合。 我发现使用list的,需要在元模型中声明listattribute而不是setattribute,否则会引发nullpointerException,如果看不到整个堆栈跟踪,您将不会注意到元模型没有被JPA规范初始化。 |