我有两个实体,如下所示:
users:
public class User implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long userId;
@Column(nullable = false)
private String userName;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
@JoinColumn(name="userId", referencedColumnName = "userId")
private Address address;
}
Address:
public class Address {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long addressId;
private String streetName;
private Long userId;
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "userId", referencedColumnName="userId", insertable = false, updatable = false, nullable = false)
private User user;
}
我正在做userRepository.save(user(;用户对象如下:
{
"userName" : "test",
"Address" : {
"streetName" : "street"
}
}
但是在Address表中,userId显示为NULL,即使存在forign密钥关系,并且当我得到用户实体Address时,它显示为NULL。有人能告诉我在哪里出错吗。
提前谢谢。
如果我像这样更改了上面的代码:
User.java
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "addressId")
private Address address;
Address.java
@OneToOne(mappedBy = "user")
private User user;
它运行良好。