网上查到:解决办法有2种:
1,在many-to-one 映射中设置lazy="false"
2,导入cglib-2.2并替换cglib-1.3
我采用了第一种,成功解决问题.
java.lang.NullPointerException
org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
org.hibernate.type.EntityType.resolve(EntityType.java:303)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
org.hibernate.loader.Loader.doQuery(Loader.java:717)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
...
设置如下:
<hibernate-mapping>
<class name="com.qdrk.mysqlssh.model.News" table="news" catalog="qdrk">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<many-to-one name="category" class="com.qdrk.mysqlssh.model.Category" fetch="select" lazy="false">
<column name="categoryId" not-null="true" />
</many-to-one>
<many-to-one name="user" class="com.qdrk.mysqlssh.model.User" fetch="select" lazy="false">
<column name="posterId" not-null="true" />
</many-to-one>
<property name="title" type="java.lang.String">
<column name="title" length="50" not-null="true" />
</property>
<property name="cpmtemt" type="java.lang.String">
<column name="cpmtemt" length="65535" not-null="true" />
</property>
<property name="postDate" type="java.util.Date">
<column name="postDate" length="0" not-null="true" />
</property>
<property name="lastModifyDate" type="java.util.Date">
<column name="lastModifyDate" length="0" not-null="true" />
</property>
<set name="newsreviews" inverse="true">
<key>
<column name="newsId" not-null="true" />
</key>
<one-to-many class="com.qdrk.mysqlssh.model.Newsreview" />
</set>
</class>
</hibernate-mapping>