Google App Engine Datastore와 함께 열거 모음을로드
-
19-09-2019 - |
문제
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이 예상 될 것입니다.
제휴하지 않습니다 StackOverflow