【发布时间】:2020-11-23 20:44:17
【问题描述】:
我有一个关于 Spring Boot 中的一对一单向映射的问题。 我有一个 Customer 类,它具有到 Address 类的一对一单向映射。
但是当我尝试将新客户与现有地址关联时,数据库会更新。 因此,两个客户现在与一个地址相关联。
据我了解,只有一个客户应该与一个唯一地址相关联。我是否正确理解了这个概念,还是我在 Spring Boot/Spring Data JPA/Hibernate 中做错了什么?
客户
@Entity
public class Customer {
@Id
private Long cId;
private String cName;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="aid")
private Address cAddr;
:
}
地址
@Entity
public class Address {
@Id
private Long aid;
private String town;
private String county;
:
}
data.sql
insert into address values (100, "New York", "NY");
insert into customer values (1, "John Smith", 100);
Application.java
@Override
public void run(String... args) throws Exception {
Customer c1 = new Customer((long)5, "Mr. Men");
Optional<Address> a100 = ar.findById((long)100);
c1.setcAddr(a100.get());
cr.save(c1);
}
【问题讨论】:
标签: spring-boot hibernate spring-data-jpa nhibernate-mapping