Я создал два класса на стороне клиента, и они хранятся с использованием GWT JDO.
Родительский класс выглядит следующим образом:Получение данных из jdo datastore
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Park implements Serializable{
@PrimaryKey
@Persistent
private String parkId;
//...
@Persistent(mappedBy = "park", defaultFetchGroup = "true")
private List<Facility> facilityList;
// other stuff
и ребенок выглядит следующим образом:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Facility implements Serializable{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String encodedKey;
@Persistent
private Park park;
// other stuff
А на стороне сервера, у меня есть метод для извлечения все:
public Park[] getParks(){
PersistentManager pm = getPersistentManager();
ArrayList<Park> parkList = new ArrayList<Park>();
try {
Query q = pm.newQuery(Park.class);
List<Park> parks = (List<Park>) q.execute();
for(Park p:parks)
parkList.add(p);
} finally {
pm.close();
}
return parkList.toArray(new Park[parkList.size()]);
}
Когда я вызовите этот метод, он выдает исключение:
com.google.gwt.user.client.rpc.SerializationException: Введите 'org.datanucleus.store.t ypes.sco.backed.ArrayList 'не был включен в набор типов, которые могут быть сериализованы с помощью этого объекта SerializationPolicy или его класса не могут быть загружены. В целях безопасности этот тип не будет сериализован.
Не могу понять, в чем дело. Любое предложение приветствуется.