我在尝试NullPointerException
时看到buildSessionFactory
。但是,在Eclipse的调试模式中单击异常对象时,我看到的消息是com.sun.jdi.InvocationException occurred invoking method.
我在引入新的Entity
类之后才看到这种行为。存在类所绑定的表。没有错别字。 hibernate.cfg.xml
也已成功解析。在hibernate尝试将新类绑定到表之后抛出致命异常。
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@lvsspldb06.qa.xxxx.com:1556:ICMDBTST</property>
<property name="hibernate.connection.username">ICMAPP</property>
<property name="hibernate.connection.password">ICMAPP</property>
<property name="show_sql">true</property>
<mapping class="com.xxxx.top.entity.Release"></mapping>
<mapping class="com.xxxx.top.entity.Package"></mapping>
<mapping class="com.xxxx.top.entity.Top"></mapping>
<mapping class="com.xxxx.top.entity.PortAssignment"></mapping>
</session-factory>
</hibernate-configuration>
desc package_portassignment;
提供输出。这样确认表存在。
控制台日志
. . . 22:03:02.239 [main] DEBUG org.hibernate.cfg.Configuration - Session-factory config [null] named class [com.xxxx.top.entity.Release] for mapping 22:03:03.031 [main] DEBUG org.hibernate.cfg.Configuration - Session-factory config [null] named class [com.xxxx.top.entity.Package] for mapping 22:03:03.589 [main] DEBUG org.hibernate.cfg.Configuration - Session-factory config [null] named class [com.xxxx.top.entity.Top] for mapping 22:03:04.076 [main] DEBUG org.hibernate.cfg.Configuration - Session-factory config [null] named class [com.xxxx.top.entity.PortAssignment] for mapping 22:03:04.080 [main] INFO org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null . . . 22:03:13.287 [main] DEBUG org.hibernate.cfg.Configuration - Processing hbm.xml files 22:03:13.287 [main] DEBUG org.hibernate.cfg.Configuration - Process annotated classes 22:03:13.305 [main] DEBUG org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.xxxx.top.entity.Release 22:03:13.415 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3DiscriminatorColumn{logicalColumnName'DTYPE', discriminatorTypeName='string'} 22:03:13.422 [main] DEBUG org.hibernate.cfg.AnnotationBinder - No value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED 22:03:13.450 [main] DEBUG o.h.cfg.annotations.EntityBinder - Import with entity name Release 22:03:13.470 [main] DEBUG o.h.cfg.annotations.EntityBinder - Bind entity com.xxxx.top.entity.Release on table release_release 22:03:13.567 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(release_release), mappingColumn=id, . . . 22:03:13.646 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3DiscriminatorColumn{logicalColumnName'DTYPE', discriminatorTypeName='string'} 22:03:13.646 [main] DEBUG org.hibernate.cfg.AnnotationBinder - No value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED 22:03:13.646 [main] DEBUG o.h.cfg.annotations.EntityBinder - Import with entity name Package 22:03:13.647 [main] DEBUG o.h.cfg.annotations.EntityBinder - Bind entity com.xxxx.top.entity.Package on table package_package . . . 22:03:13.699 [main] DEBUG org.hibernate.cfg.AnnotationBinder - No value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED 22:03:13.699 [main] DEBUG o.h.cfg.annotations.EntityBinder - Import with entity name Top 22:03:13.700 [main] DEBUG o.h.cfg.annotations.EntityBinder - Bind entity com.xxxx.top.entity.Top on table top_top 22:03:13.710 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(top_top), mappingColumn=id, insertable=true, updatable=true, unique=true} . . . 22:03:13.719 [main] DEBUG org.hibernate.cfg.AnnotationBinder - No value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED 22:03:13.719 [main] DEBUG o.h.cfg.annotations.EntityBinder - Import with entity name PortAssignment 22:03:13.719 [main] DEBUG o.h.cfg.annotations.EntityBinder - Bind entity com.xxxx.top.entity.PortAssignment on table package_portassignment FATAL exception is thrown here
PortAssignment.java。无法在这个问题中发布它,因为stackoverflow让我对格式化感到非常悲痛。
答案 0 :(得分:0)
我重新编写了新类,错误消失了。我承认,我很尴尬,但我认为注释Column(name=...)
中的一个属性存在拼写错误。
我假设这导致Hibernate的一个内部类(特别是NullPointerException
)中出现org.hibernate.annotations.common.reflection.XClass.getDeclaredProperties
。
感谢Channa Jayamuni的想法。