我得到下面的错误。但是我找不到错误是什么
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.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 91 more
找到Configuration的源代码,转到第1481行,该行中使用了一个引用,引用为null。
,然后挖掘这个引用是如何分配的,并跟踪它。
或者可以调试
我只是偶然发现了这个问题和@BlackJoker的建议,虽然有点通用,但正是一个人应该做的。
在我的情况下,错误发生在hibernate-core:4.3.1。最后在第1499行,但有相同的错误。
代码尝试解析内外键/映射。我有一个具有@OneToOne映射的实体,其类型不是必需的实体,而是字符串。
@Entity
@Table(name = "MyTable")
public class BrokenEntity {
@Id
@Column(name = "id")
private String flow;
@Id
@JoinColumn(name = "other_id")
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private String group;// Now hibernate tries to map the String as entity and fails!
}
删除映射或用一个有效的实体替换java.lang.String可以解决这个问题。
由于您没有指出更多关于您的类,请查看Hibernate抛出NullPointerException - processFkSecondPassInOrder以获取指向上述错误的指针…
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)
该错误意味着您对缺失的对象添加了注释。例如:您将@JoinColumn
放入private Car car
,但Car
对象无处可寻。
异常称为NullPointerException
,它表明您正在尝试使用未创建的对象,这通常发生在您声明对象时,忘记创建它并尝试使用它