2012-01-02 4 views
2

내 자신의 java.util.List 구현을 작성했으며 이제는 DataNucleus를 사용하여 MySQL에 저장하려고합니다. 구현은 List 인터페이스를 구현하는 공용 클래스와 해당 목록에 대한 노드를 구현하는 개인 클래스로 구성됩니다.DataNucleus, JDO, 내 목록 구현을 유지하는 방법?

이클립스에서 SchemaTool를 실행하면, 내 노드 구현을위한 전용 테이블이 생성됩니다, 그리고 난 내 응용 프로그램을 실행할 때, 나는 다음과 같은 오류 얻을 : 여기

Persistent class "a.b.c.util.DtvList" has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class. 

내 목록 구현 클래스의 시작에 불과을 ...
 
@PersistenceCapable 
@Inheritance(strategy=InheritanceStrategy.COMPLETE_TABLE) 
public class DtvList<E extends Comparable<E>> implements List { 
    @Persistent 
    private DtvListNode first = null; 
    private DtvListNode last = null; 
    private int length = 0; 
    public DtvList(){}; 

또한 add(E object) 메서드에 대한 구현 만 있고 다른 모든 메서드는 RuntimeException입니다. 그것이 문제일까요?

PS 나는 또한에서는 getIterator 등과 같은 좀 더 방법을 구현하는 시도하지, 나는 심지어 매핑 플러그인 (http://www.datanucleus.org/extensions/rdbms_java_types.html)를 기록했지만, 더에 이익. 테이블은 데이터베이스의 SchemaTool에 의해 생성되지 않습니다.

PS/2 DtvListNode 구현에 대한 매핑 클래스가 추가되었으므로 이제 DtvList에 대한 테이블이 있지만 DtvListNode에는 테이블이 없습니다. 아직 작동하지 않습니다. 하지만 난 여전히 org.datanucleus.store.exceptions.NoTableManagedException DtvList 테이블이 존재하지 않는 예외가 발생합니다.

답변

1

DataNucleus가 매핑 관계에 대한 사용자 지정 목록 구현을 지원한다고 생각하지 않습니다.

목록 크기가 작고 구현이 복사 생성자와 List()를 지원할 수있는 경우 표준 목록을 매핑하고 LoadCallback 및 StoreCallback을 구현하여 변환을 관리 할 수 ​​있습니다. 분명히 그 목록에 대한 지속적인 작업이 많은 경우 오히려 지저분해질 것입니다 ...

관련 문제