2010-12-17 88 views
0

這個問題可能與Hibernate有很大關係,但是由於Play混淆了Hibernate並且我還是不知道它......播放:添加一個「多」對象到「一個」列表屬性是什麼?

請看下面的示例代碼:用戶有很多帖子。

public class User extends Model{ 
    ... 
    @OneToMany(mappedBy="author") 
    public List<Post> posts; 
} 

public class Post extends Model{ 
    ... 
    @ManyToOne 
    public User author; 
} 

當我創建一個帖子newPostUser=John,爲什麼我要叫John.add(newPost)

John和newPost已經在數據庫中。即使沒有.add調用,表格也有外鍵約束。我打電話給.add方法時實際發生了什麼?

回答

1

那它取決於.add方法中的代碼。但是對於Hibernate,您需要在雙向映射中維護映射的兩側。

因此,您的add方法可能會將帖子添加到帖子列表中,以便維護貼圖的兩側(我假設您創建的帖子在此時設置了作者)。

+0

我沒有得到的是.add方法在持久性方面做了些什麼。我查看了我編寫的測試所生成的內容,並且數據庫數據沒有改變,無論我是否調用.add或不。如果我關閉應用程序並重新啓動它(在產品中),應用程序的「1」端是否知道所有「多」對象? – 2010-12-18 00:02:49

相關問題