PlayFramework(JPA,Hibernate)。兩個實體software
< -m:n->tag
,software
是該關係的所有者。我不使用任何cascading
。 我想刪除其中包含一些軟件的tag
。playframework的多對多刪除問題
考慮到software
是業主方,我寫在我的Tag類:
class Tag {
@Override
public Tag delete() {
for (Software software : this.softwares) {
software.tags.remove(this);
software.save(); // if we delete this, we will have an error - a foreign key constraint fails
}
return super.delete();
}
}
現在工作得很好,我已經添加行software.save()
後。 問題是:爲什麼我應該這樣做?
我有另一個項目 - 沒有Play框架 - 它使用JPA-> Hibernate,我不必這樣做。那有什麼區別?
在this link它們也不使用save()。
事實上,即使使用Tag.em()。persist(),它也需要使用save(),這是否意味着播放以某種方式對EnityManager/Hibernate有影響?即這個em()已經準備/配置爲需要明確使用save()嗎? – ses 2011-03-23 17:02:23
是的,如果您閱讀我在上面發佈的鏈接,則需要明確說出「保存」以存儲更改。 – 2011-03-23 17:25:49