我怎样才能找到准确的错误



我得到下面的错误。但是我找不到错误是什么

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,它表明您正在尝试使用未创建的对象,这通常发生在您声明对象时,忘记创建它并尝试使用它

相关内容

  • 没有找到相关文章

最新更新