PersistenceException 中的模糊消息:无法构建 Hibernate SessionFactory
Ambiguous message in PersistenceException: Unable to build Hibernate SessionFactory
我面临我的第一个 "big project",我的数据结构非常复杂,所以我正在一个一个地构建我的 @Entity
classes 并测试我的所有操作一个TDD process。此外,我正在使用 hibernate-entitymanager
(取决于 hibernate-core
)生成内存中的 HSQLDB,而不依赖于 真实数据库连接 。但我收到以下错误:
javax.persistence.PersistenceException: [PersistenceUnit: sigeaPU] Unable to build Hibernate SessionFactory
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1134)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:793)
...
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at ar.edu.unt.sigea.commontest.RepositorioBaseTest.iniciarDBTest(RepositorioBaseTest.java:16)
最后一个是我的class。问题是消息 Unable to build Hibernate SessionFactory
没有给我太多信息来查看错误可能在哪里,因为在构建持久性上下文时会抛出异常。
我怎样才能知道错误可能出在哪里?
当您遇到特定异常时,堆栈跟踪很有用。通常,Hibernate 会抛出带有有用消息的异常,但它们被包装在调用堆栈 方法的某处 (我不知道这是不是正确的术语,但我指的是堆栈跟踪),最后你得到一个 PersistenceException
和那个消息。
所以在这些情况下,检查堆栈底部方法的源代码很有用,在这种情况下 org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1134)
(当然,你手头必须有源代码,这是小菜一碟Maven and the IDE of your preference, mine is NetBeans)。在这种情况下,如果转到 CollectionBinder.java
的相应行,您可以看到以下内容:
throw new AnnotationException(
"Use of @OneToMany or @ManyToMany targeting an unmapped class: " + path + "[" + collType + "]");
因此请检查您所做的最后一个 @OneToMany
and/or @ManyToMany
注释及其在关系反面的配置方式(实体 class 与 @ManyToOne
或 @ManyToMany(mappedBy = ...)
注释)。这里有很好的来源可供检查:
我面临我的第一个 "big project",我的数据结构非常复杂,所以我正在一个一个地构建我的 @Entity
classes 并测试我的所有操作一个TDD process。此外,我正在使用 hibernate-entitymanager
(取决于 hibernate-core
)生成内存中的 HSQLDB,而不依赖于 真实数据库连接 。但我收到以下错误:
javax.persistence.PersistenceException: [PersistenceUnit: sigeaPU] Unable to build Hibernate SessionFactory
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1134)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:793)
...
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at ar.edu.unt.sigea.commontest.RepositorioBaseTest.iniciarDBTest(RepositorioBaseTest.java:16)
最后一个是我的class。问题是消息 Unable to build Hibernate SessionFactory
没有给我太多信息来查看错误可能在哪里,因为在构建持久性上下文时会抛出异常。
我怎样才能知道错误可能出在哪里?
当您遇到特定异常时,堆栈跟踪很有用。通常,Hibernate 会抛出带有有用消息的异常,但它们被包装在调用堆栈 方法的某处 (我不知道这是不是正确的术语,但我指的是堆栈跟踪),最后你得到一个 PersistenceException
和那个消息。
所以在这些情况下,检查堆栈底部方法的源代码很有用,在这种情况下 org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1134)
(当然,你手头必须有源代码,这是小菜一碟Maven and the IDE of your preference, mine is NetBeans)。在这种情况下,如果转到 CollectionBinder.java
的相应行,您可以看到以下内容:
throw new AnnotationException(
"Use of @OneToMany or @ManyToMany targeting an unmapped class: " + path + "[" + collType + "]");
因此请检查您所做的最后一个 @OneToMany
and/or @ManyToMany
注释及其在关系反面的配置方式(实体 class 与 @ManyToOne
或 @ManyToMany(mappedBy = ...)
注释)。这里有很好的来源可供检查: