Java 我什么时候在Hibernate中使用@OneToOne注释?
我有两个表Java 我什么时候在Hibernate中使用@OneToOne注释?,java,hibernate,annotations,Java,Hibernate,Annotations,我有两个表表1,表2。两者都有一对一的关系 table2包含table1的外键 如果我使用 @OneToOne(cascade=CascadeType.ALL)或 @ManyToOne(fetch=FetchType.LAZY)用于下面的方法。那会有什么影响呢 @Column( name = "table1_id" ) public Long getTable1Id() { return this.table1Id; } 若您使用OneToOne,那个么您需要定义的不是类中的id变量
表1
,表2
。两者都有一对一的关系
table2
包含table1
的外键
如果我使用
@OneToOne(cascade=CascadeType.ALL)
或
@ManyToOne(fetch=FetchType.LAZY)
用于下面的方法。那会有什么影响呢
@Column( name = "table1_id" )
public Long getTable1Id() {
return this.table1Id;
}
若您使用OneToOne,那个么您需要定义的不是类中的id变量,而是另一个类的对象,如以下示例所示: Lazy意味着在被访问之前,不会从其他表中提取行。
CascadeType.ALL
表示所有操作(如删除)都将传播到相关对象。目前我可以成功地获取和保存记录。如果我应用@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY),那么它会通过异常吗?声明它肯定不会抛出异常——但我猜你的意思是在访问它时?首先,@OneToOne对于一对一的关系来说是正确的,当然,第二,如果您试图访问getter/setter而不在有效的持久性上下文中,您会遇到一个异常,抱怨延迟加载,这意味着当对象被分离时,无法获得对其他对象的引用。我发现用对象而不是表来思考会有帮助。那么,如何将两个对象链接在一起呢?嗯,一个必须是另一个的成员。Dbf在这方面做得更多。