我有3个类,推荐,判断,用户,关系是:一个推荐可能有多个判断,一个用户可能有多个判断(对不同的推荐),下面是我的JPA类:
类推荐
@Entity
@Table(name = "RECOMMENDATIONS")
public class Recommendation implements Serializable, Cloneable {
...
@OneToMany(cascade = {CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER, mappedBy="recommendation", targetEntity=Judgement.class)
private Set<Judgement> judgements;
...
public Recommendation() {
super();
this.judgements = new LinkedHashSet<Judgement>();
}
...
}类User:
@Table(name = "USERS", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User implements Serializable, Cloneable {
...
@OneToMany(mappedBy="judge", targetEntity=Judgement.class, cascade = { CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER)
private Set<Judgement> judgements;
...
public User() {
super();
this.judgements = new LinkedHashSet<Judgement>();
}
...
}类判断:
@Entity
@Table(name = "JUDGEMENTS")
public class Judgement implements Serializable, Cloneable {
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name = "id")
private Recommendation recommendation;
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name = "user_id")
private User judge;
...
public Judgement() {
super();
}
...
}在db中,我有以下表格:用户推荐;判断;
我在users中有一些数据,在recommendations中有一些数据,但在判断表中是空的,当我加载我的应用程序时得到以下异常:
com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentSet' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = []我调试了加载推荐记录的判断字段时生成的代码,它不能实例化它。请帮帮我!
发布于 2012-05-09 15:48:01
包含由hibernate加载的数据库实体的对象是不可序列化的。因此,它们不能用作gwt远程过程调用的传输对象。
最简单的解决方案是将实体实例(在您的示例中是建议、判断和用户实例)中的所有内容复制到简单的数据持有者对象中,并将持有者对象用作远程过程调用中的参数。对于小型项目来说,这是一个很好的解决方案。对于更大的项目,您可以考虑使用Gilead库;在这种情况下,您甚至可以从延迟加载中获益。
谷歌提供了将hibernate集成到GWT中的a good documentation。
https://stackoverflow.com/questions/10506303
复制相似问题