我有下面的類自我引用@OneToMany
@Entity
public class Comment extends Base {
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Comment inReplyTo;
@OneToMany(mappedBy = "inReplyTo", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Collection<Comment> replies;
public Comment() {
}
public Collection<Comment> getReplies() {
return replies;
}
public void setReplies(Collection<Comment> comments) {
this.replies = comments;
}
public Comment getInReplyTo() {
return inReplyTo;
}
public void setInReplyTo(Comment inReplyTo) {
this.inReplyTo = inReplyTo;
}
}
添加一個新的註釋,並設置inReplyTo作品和註釋保存到數據庫。但inReplyTo評論的答覆字段爲空。
而且在做這個錯誤
org.datanucleus.store.types.IncompatibleFieldTypeException: Incompatible type requested for field "Comment.replies" : was java.util.Collection but should be java.util.Collection
任何想法
c.setReplies(new ArrayList<Comment>());
c.getReplies().add(x);
repo.save(c);
結果?
最初,這個異常的文本看起來像無稽之談,因爲這兩種類型似乎是相同的。但是,您可能正在考慮datanucleus從另一個jar(版本)獲取'java.util.Collection'到您的代碼引用的可能性。檢查你沒有某種類加載器的問題。 – DuncanKinnear
您是否在使用Maven構建此項目?如果是這樣,也許你可以做一個Maven依賴關係樹來查看java.util是否存在多個依賴關係。 – DuncanKinnear
Adrian,是類加載器的問題嗎? –