2012-09-30 3 views
0

지도가있는 클래스가 있지만이 엔티티를 유지하려고하면 null 포인터 예외가 발생합니다. 내 코드/설정에서 무엇이 잘못 될 수 있습니까?Datanucleus JDO의지도 속성

내 클래스 :

@PersistenceCapable(detachable="true") 
public class MyClassEntity implements MyClass { 

    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.NATIVE) 
    private String id; 

    @Persistent @Join @Element(embedded="true") 
    @Extension(vendorName = "datanucleus", key = "implementation-classes", value = "com.company.MySecondClassEntity") 
    private Map<String, MySecondClass> map = new HashMap<String, MySecondClass>(); 

    // Getters and setters here 

} 

예외 :

Exception in thread "main" java.lang.NullPointerException 
    at org.datanucleus.store.rdbms.sql.AbstractStatementGenerator.<init>(AbstractStatementGenerator.java:101) 
    at org.datanucleus.store.rdbms.sql.AbstractStatementGenerator.<init>(AbstractStatementGenerator.java:139) 
    at org.datanucleus.store.rdbms.sql.UnionStatementGenerator.<init>(UnionStatementGenerator.java:153) 
    at org.datanucleus.store.rdbms.scostore.RDBMSJoinMapStore.getSQLStatementForGet(RDBMSJoinMapStore.java:770) 
    at org.datanucleus.store.rdbms.scostore.RDBMSJoinMapStore.getValue(RDBMSJoinMapStore.java:639) 
    at org.datanucleus.store.rdbms.scostore.RDBMSJoinMapStore.putAll(RDBMSJoinMapStore.java:195) 
    at org.datanucleus.store.mapped.mapping.MapMapping.postInsert(MapMapping.java:135) 
    at org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:520) 
    at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:166) 
    at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:142) 
    at org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:2377) 
    at org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:2353) 
    at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:1896) 
    at org.datanucleus.ObjectManagerImpl.persistObjectWork(ObjectManagerImpl.java:1745) 
    at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:1593) 
    at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:731) 
    at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:756) 
    at com.mycompany.dao.impl.JDOGenericDao.save(JDOGenericDao.java:63) 
    at com.mycompany.dao.Main.main(Main.java:29) 

메이븐 dependecies :

<dependencies> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>3.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-api-jdo</artifactId> 
     <version>3.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.jdo</groupId> 
     <artifactId>jdo-api</artifactId> 
     <version>3.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>[1.2, 1.3)</version> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>3.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.21</version> 
    </dependency> 
</dependencies> 

답변

1

는 "가치 구현 클래스"고 생각했을까요 연장 키로는 방법을 만든다 네가 그곳에있는 것보다 더 감각적이다. 그렇지 않으면 네가 엄마의 가치에 대해 이야기하고 있음을 어떻게 알 수 있을까? p가 아닌 키)?

+0

나는 value-implementation-classes에 지쳤지만 같은 예외를 던졌다. – newbie

+0

그리고 그 통나무는 뭐라고 말합니까? 어쩌면 거기에는 몇 가지 주요 정보 비트가 있습니다 .-) – DataNucleus

+0

이전과 동일한 예외가 발생하고 datanucleus.log 파일에 오류나 경고가 없습니다. 나는 datanucelus 예제 프로젝트를 템플릿으로 사용했다. 이 문제를 어떻게 디버깅 할 수 있습니까? – newbie