2011-12-22 57 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