加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

jpa – @OneToOne单向和双向

发布时间:2020-12-14 05:09:18 所属栏目:Java 来源:网络整理
导读:我有两个例子,首先是@OneToOne单向映射和第二个双向.在单向映射中,拥有端表必须包含引用其他表的id的连接列;那么在双向中,它们之间必须包含彼此的外键列.但是在使用自动生成策略生成数据库模式之后,两个示例对数据库模式具有相同的效果.单向映射是正常的,但
我有两个例子,首先是@OneToOne单向映射和第二个双向.在单向映射中,拥有端表必须包含引用其他表的id的连接列;那么在双向中,它们之间必须包含彼此的外键列.但是在使用自动生成策略生成数据库模式之后,两个示例对数据库模式具有相同的效果.单向映射是正常的,但双向示例只包含一个外键列,但它必须涉及彼此的外键!

单向映射

@Entity
public class Customer43 {

@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;

// Getters,Setters and Constructors.
}

@Entity
public class Address43 {

@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;

// Getters,Setters and Constructors.
}

双向映射

@Entity
public class Customer44 {

@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;

// Getters,Setters and Constructors.
}

@Entity
public class Address44 {

@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
@OneToOne(mappedBy = "address")
private Customer44 customer;

// Getters,Setters and Constructors.
}

为什么数据库模式输出相同,为什么双向映射的行为就像单向?

解决方法

因为您不了解双向OneToOne的映射方式.你不需要两个外键.一个单独的一个足以在两个方向上执行两个表之间的连接:
select a.* from address a inner join customer c on c.addressId = a.id;
select c.* from customer c inner join address a on c.addressId = a.id;

关联是单向或双向的事实不会改变表如何链接在一起.它只是更改映射,并允许在两个方向上导航关联.

在双向关联中,您始终拥有一个拥有方(它告诉关联如何映射,使用哪个连接列)和一个反面,您只需说:我是该对象映射的对方字段(mappingBy属性值中的字段).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读