Я использую Google Web Toolkit с java и хранилищем данных Google в качестве базы данных.У класса сущности есть arraylist, и при попытке извлечь данные из базы данных я получаю исключение:
Тип 'org.datanucleus.sco.backed.ArrayList' не был включен в набортипы, которые могут быть сериализованы этим SerializationPolicy или его объектом Class, не могут быть загружены.В целях безопасности этот тип не будет сериализован.
Я использую JPA.
Код объекта:
package com.ver2.DY.client;
import java.io.Serializable;
import java.util.ArrayList;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.gwt.user.client.rpc.IsSerializable;
@PersistenceCapable
public class ChatInfo implements Serializable, IsSerializable{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long topicId;
@Persistent
private String chatTopic;
@Persistent
private ArrayList<String> messages = new ArrayList<String>();
@Persistent
private boolean isFirstPost;
public ChatInfo()
{
}
public Long getTopicId() {
return topicId;
}
public void setTopicId(Long topicId) {
this.topicId = topicId;
}
public String getChatTopic() {
return chatTopic;
}
public void setChatTopic(String chatTopic) {
this.chatTopic = chatTopic;
}
public ArrayList<String> getMessages() {
return messages;
}
public void addMessage(String newMsg) {
messages.add(newMsg);
}
public boolean isFirstPost() {
return isFirstPost;
}
public void setFirstPost(boolean isFirstPost) {
this.isFirstPost = isFirstPost;
}
}
Метод в классе БД:
@Transactional
public ChatInfo[] getAllChat() {
PersistenceManager pm = PMF.get().getPersistenceManager();
List<ChatInfo> chats = null;
ChatInfo[] infos = null;
String query = "select from " + ChatInfo.class.getName();
try{
chats = (List<ChatInfo>) pm.newQuery(query).execute();
infos = new ChatInfo[chats.size()];
for(int i=0;i<chats.size();i++)
{
infos[i] = new ChatInfo();
infos[i] = (ChatInfo) chats.get(i);
}
}
finally{
pm.close();
}
return infos;
}
Это немного странно, потому что раньше я мог вставлять и извлекать данные, но теперь выбрасывал исключение.При поиске в Интернете я обнаружил, что мне нужно преобразовать Arraylist из некоторого типа DataNucleus в утилиту java, но я не уверен, как это сделать.