我有USER(id)和CONTACT(user_id,first,last)表。 CONTACT.user_id是USER表的外键。SpringDataJPA通过主键/外键保存OneToOne关系,保存对象
在User.java:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Contact contact;
在Contact.java
@Id
@Column(name="USER_ID")
private Integer userId;
@MapsId
@OneToOne(mappedBy = "contact")
@JoinColumn(name = "USER_ID")
private User user;
我使用userRepository.saveAndFlush(用户),以节省用户对象。由于我在CONTACT中使用USER.ID作为外键,因此我需要在CONTACT之前插入USER,但JPA首先插入CONTACT,它将CONTACT视为USER的成员。所以当插入CONTACT时,我得到一个USER_ID不能为NULL错误。我应该如何解决这个插入的顺序?或者我应该通过共享主键来避免使用OneToOne映射?
谢谢!
[SpringDataJPA保存OneToOne关系获取可能的重复无法添加或更新子行:外键约束失败](http://stackoverflow.com/questions/28683427/springdatajpa-save-onetoone-relationship-getting-cannot -add-or-update-a-child-ro) – jfun 2015-02-23 23:38:41