我使用谷歌Web工具包與Java和谷歌數據存儲作爲數據庫。 實體類有ArrayList和對正在嘗試從數據的基礎上,我發現了異常數據:ArrayList從谷歌數據存儲檢索異常(與GWT,Java)
類型「org.datanucleus.sco.backed.ArrayList」沒有被列入類型的集合 可以通過此SerializationPolicy對其進行序列化,或者可以使用其類對象 不加載。爲了安全起見,這種類型不會被序列化。
我正在使用JPA。
實體代碼:在DB類
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 util,但不知道如何做到這一點。
有人可以編輯這個問題,並將代碼放入代碼構造嗎? – Syntax 2010-08-18 00:40:51