문제

Java와 함께 Goole App Engine Datastore를 사용하고 있으며 열거 목록이있는 물체를로드하려고합니다. 객체를로드 할 때마다 목록은 널입니다. 대상은

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private List<AnEnum> anEnumList;

    //public getters and setters
}

열거는 간단합니다

public enum AnEnum {
    VALUE_1,
    VALUE_2;
}

그것을 저장하는 코드입니다

ObjectToSave objectToSave = new ObjectToSave();
List<AnEnum> anEnumList = new ArrayList<AnEnum>();
anEnumList.add(AnEnum.VALUE_1);
objectToSave.setAnEnumList(anEnumList);
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    pm.makePersistent(objectToSave);
} finally {
    pm.close();
}

로드하는 코드입니다

PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
    ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
    pm.close();
}

사용중인 데이터 스토어에서 데이터를 볼 수 있습니다 http : // localhost : 8080/_ah/admin 내 목록이 저장된 것을 볼 수 있지만 객체가로드 될 때는 없습니다.

Eclipse 플러그인으로 프로젝트를 만들었고 내가 아는 한 Datastore 설정을 변경하지 않았습니다. 그렇다면 왜 내 열거 목록 NULL입니까?

도움이 되었습니까?

해결책

그렇습니다. 그러나 귀하의 목록 필드는로드시 기본 페치 그룹에 있지 않으므로로드되지 않습니다. 읽다 JDO 가져 오기 그룹. DFG에 추가하거나 사용자 정의 페치 그룹을 활성화하거나 PM을 닫기 전에 필드를 "터치"할 수 있습니다.

-앤디 (andy)datanucleus)

다른 팁

ObjectTosave 인스턴스를 어떻게 만들고 있습니까? 모든 인스턴스 변수 참조 유형의 기본값은 NULL이므로 (추가) 코드가없는 한 List<AnEnum> 그리고 그것을 할당하십시오 anEnumList, null이 예상 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top