有人看过这条信息吗?
在Hibernate论坛上有一些关于这个问题的讨论,但并不清楚是什么。
我们正在使用JPA和Spring 3.0.5运行Hibernate 3.6.9。这个异常只是在两个构建之间弹出(因为它在一天前工作,今天正在导致部署问题)。这可能与一些错误配置的MySQL文件有关吗?我们为我们的模型提供了orm.xml文件,也为我们的命名MySQL提供了文件。
Caused by: java.lang.NullPointerException
at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1481)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1419)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
字符串
4条答案
按热度按时间kx1ctssn1#
所以我们找到了问题所在。只是不幸的是,当Hibernate无法找到FK时,并没有抛出一些标准的配置异常,比如“嘿,傻瓜,我找不到你在Hibernate文件中定义的FK”。
我们在同一个schema/db下有两个对象:
字符串
所以Address对象是一对一的,作为复合键的一部分存在:
型
问题是我们将Address对象移到了另一个数据库的另一个模式中,并将关系保留在MySQL文件中(因此Address在复合键中仍然是一对一的)。
为了修复它,我们断开了关系并使Address成为 transient 的,以便我们以不同的方式检索它,从而消除了异常的发生。
xytpbqjk2#
我们确实有同样的问题,但问题是当从实体中提取接口时,eclipse重构确实用其他实体中的接口替换了实现的类名。
cyej8jka3#
我们刚刚经历了这样的情况:webapp A使用了库B,我们添加了一个从库B到库C的依赖项(即B.Foo与C.Bar有ManyToOne关系),但是webapp A的Hibernate配置没有将库C包含在要扫描的包列表中。结果:Hibernate不知道库C中的实体被引用。
kgqe7b3p4#
当我想在我的测试资源中使用persistence.xml构建一个与H2的DB集成测试时,我就看到了这一点,这样我就可以只使用我需要的类来构建我的entityManager,并以 lightning 般的速度在内存中初始化H2 db,并检查日志中的实际查询。我还可以用SQL文件插入我想要的数据行。
最后,当我在这一行调试Hibernate源代码时,我看到了这样的结果:
字符串
将该类添加到
<persistent-unit>/<class>
部分解决了这个问题,因为我已经配置了<exclude-unlisted-classes>true</exclude-unlisted-classes>
。