我正在尝试使用 AppEngine 和 JPA 持久性保存和加载带有日期的对象。但是,当我加载对象并尝试将其发送到 GWT 时,它会抛出此异常:
严重:javax.servlet.ServletContext 日志:调度传入 RPC 调用 com.google.gwt.user.client.rpc.SerializationException 时出现异常:类型“org.datanucleus.store.types.sco.simple.Date”未包含在无法加载可由此 SerializationPolicy 或其 Class 对象序列化的类型集。出于安全考虑,此类型不会被序列化。:实例 = Wed Oct 09 22:47:22 EDT 2013
这是我的服务器查询:
Query q = em.createQuery("select ee from EmailEvent ee");
al.addAll( q.getResultList() );
for (EmailEvent row: al) {
log.info(row.getSenderEmail() + ", " + row.getSendDate());
}
return al;
这是一些日志:
Oct 09, 2013 10:47:43 PM com.onixnet.sdm.server.SDMServiceImpl getSentItems
INFO: chloe@domain.com, Wed Oct 09 22:47:21 EDT 2013
这是有问题的班级:
package com.onixnet.sdm.shared;
import java.util.Date;
@Entity
public class EmailEvent implements Serializable {
...
private Date sendDate;
我已经尝试过 java.util.Date 和 java.sql.Date。我尝试在 AppEngine 管理界面中删除实体的所有行。两次它都会正确保存并加载,但不会序列化。(另一个错误是 'org.datanucleus.store.types.sco.simple.SqlDate' 无法序列化。当它是 java.sql.Date 时,它作为 long 保存到 DataStore 中。)
AppEngine SDK v1.8.5、Java 7、GWT 2.5.1。