【问题标题】:Hibernate NullPointerException when using criteria in a EntityMode.DOM4J session在 EntityMode.DOM4J 会话中使用条件时休眠 NullPointerException
【发布时间】:2009-06-09 09:41:13
【问题描述】:

如果我尝试使用以下代码,则会遇到空指针异常:

//Spring JPA entityManager allow us to retriver the underlying session.
org.hibernate.Session session = (org.hibernate.Session)entityManager.getDelegate();
org.hibernate.Session dom4jSession = session.getSession(org.hibernate.EntityMode.DOM4J);

org.hibernate.Criteria c = session.createCriteria(User.class);
c.list();

我得到以下异常:

java.lang.NullPointerException
    at org.hibernate.type.EntityType.getIdentifierType(EntityType.java:520)
    at org.hibernate.type.EntityType.setToXMLNode(EntityType.java:377)
    at org.hibernate.property.Dom4jAccessor$ElementSetter.set(Dom4jAccessor.java:333)
    at org.hibernate.tuple.component.AbstractComponentTuplizer.setPropertyValues(AbstractComponentTuplizer.java:104)
    at org.hibernate.type.ComponentType.setPropertyValues(ComponentType.java:381)
    at org.hibernate.type.ComponentType.resolve(ComponentType.java:609)
    at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298)
    at org.hibernate.persister.collection.AbstractCollectionPersister.readElement(AbstractCollectionPersister.java:725)
    at org.hibernate.collection.PersistentElementHolder.readFrom(PersistentElementHolder.java:125)
    at org.hibernate.loader.Loader.readCollectionElement(Loader.java:1031)
    at org.hibernate.loader.Loader.readCollectionElements(Loader.java:669)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:614)
    at org.hibernate.loader.Loader.doQuery(Loader.java:724)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.loadCollection(Loader.java:2015)
    at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:59)
    at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:587)
    at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
    at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1743)
    at org.hibernate.type.CollectionType.getCollection(CollectionType.java:646)
    at org.hibernate.type.CollectionType.resolveKey(CollectionType.java:430)
    at org.hibernate.type.CollectionType.resolve(CollectionType.java:424)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:139)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
    at org.hibernate.loader.Loader.doQuery(Loader.java:752)

org.hibernate.type.EntityType 的第 520 行包含以下内容:

return factory.getIdentifierType( getAssociatedEntityName() );

看起来工厂对象是空的……为什么???

【问题讨论】:

  • 我在该代码中打错了字。行:org.hibernate.Criteria c = session.createCriteria(User.class);实际上是:org.hibernate.Criteria c = dom4jSession.createCriteria(User.class);任何帮助将不胜感激。

标签: java hibernate jpa


【解决方案1】:

你能发布你的映射文件吗?还要验证映射文件是否具有节点和类型信息。此链接可能会对您有所帮助。

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/xml.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多