【发布时间】:2021-07-03 03:56:43
【问题描述】:
我尝试使用@PrimaryKeyJoinColumn 注释。执行此操作时,我收到一个错误 - 尝试从空的一对一属性分配 id。
用户已保存,但地址未保存。我想为User 和Address 表创建一个公共主键。我找到了一个例子here。
请告诉我我做错了什么,为什么这个例子对我不起作用?
https://github.com/mytestPercon/TestHiber
User.java
@Entity
@Table(name = "user", schema = "TestKeyJoin")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Basic
@Column(name = "name")
private String name;
@OneToOne(mappedBy = "user")
@PrimaryKeyJoinColumn
private Address activated;
// Getter and Setter ...
}
Address.java
@Entity
@Table(name = "Address", schema = "TestKeyJoin")
public class Address implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Basic
@Column(name = "city")
private String city;
@OneToOne
@MapsId
@JoinColumn(name = "id")
private User user;
// Getter and Setter ...
}
SaveController.java
@Controller
public class SaveController {
@Autowired
ServiceJpa serviceJpa;
@GetMapping(value = "/saveUser")
public String getJpa () {
User user = new User();
user.setId(1L);
user.setName("Michael Joseph Jackson");
serviceJpa.saveUser(user);
Address address = new Address();
address.setId(1L);
address.setCity("Los Angeles");
serviceJpa.saveActivated(address);
return "/saveUser";
}
}
【问题讨论】:
标签: hibernate spring-data-jpa spring-data hibernate-mapping