2011-12-22 89 views
0

我有兩個表table1table2。兩者都有一對一的關係。何時在Hibernate中使用@OneToOne註解?

table2包含table1的外鍵。

如果我對以下方法使用 @OneToOne(cascade=CascadeType.ALL)@ManyToOne(fetch=FetchType.LAZY)。那麼它會起什麼作用呢?

@Column(name = "table1_id") 
public Long getTable1Id() { 
    return this.table1Id; 

} 
+1

我覺得它有助於思考對象而不是表格。那麼如何將兩個物體連接在一起?那麼,一個人必須是另一個的成員。 Dbf有更多。 – AHungerArtist 2011-12-22 15:47:05

回答

1

如果您使用OneToOne比您需要的不是定義類id變量,但另一個類的對象,像這些例子:http://docs.oracle.com/javaee/5/api/javax/persistence/OneToOne.html

懶惰表示來自其他表的行在訪問之前不會被提取。 CascadeType.ALL意味着所有操作(如刪除)將傳播到關聯的對象。

+0

目前我可以成功獲取並保存記錄。如果我應用@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY),那麼它會通過異常嗎? – 2011-12-22 11:32:27

+1

聲明它絕對不會拋出異常 - 但我想你是指訪問它時?首先,@OneToOne對於一對一的實現當然是正確的,其次,如果你嘗試訪問getter/setter而不在有效的持久化上下文中時,你會得到一個抱怨延遲加載的異常,這意味着你引用了當您的對象被分離時,其他對象無法獲得。 – 2011-12-22 12:56:26