我得到以下異常:如何使用Hibernate創建具有嵌套對象的對象?
Referential integrity constraint violation: "FK779B6FDFD4D56C1: PUBLIC.LOG_TAG FOREIGN KEY(PEOPLE_ID) REFERENCES PUBLIC.TAG(ID)";
這裏就是我想要做的事:
Set<String> tagList = getTags();
Log log = new Log(content, user);
log.addTags(tagList);
log.save();
我覺得理解錯誤(試圖保存的對象與一個對象的引用那還沒有保存),但我已經嘗試了保存每個對象的順序的每個組合,並且沒有任何東西似乎正在工作。我正在研究創建博客作爲參考的Play Framework教程。這是我的模型類:
@Entity
public class Log extends Model {
@Lob
public String content;
@ManyToOne
public User author;
@ManyToMany(cascade=CascadeType.PERSIST)
public Set<Tag> tags;
public Log(String content, User author) {
this.author = author;
this.content = content;
this.tags = new TreeSet<Tag>();
}
public void addTags(Set<String> tags) {
for (String tag : tags) {
Tag newTag = Tag.findOrCreateByName(tag); //since the DB is empty, this method is simply creating and .save()'ing tags
this.tags.add(newTag);
}
}
}
現在,標記類是一個簡單的實體,只有一個字段。
我在這裏做錯了什麼?我如何完成這項工作?
你的數據庫有些奇怪。該異常表示LOG_TAG表具有TAG.ID的外鍵(PEOPLE_ID)。無論您需要刪除並重新創建表格,還是映射存在問題。 Model的名稱爲「PEOPLE_ID」的@Id列? – sceaj