在使用JPA的Java springboot中进行一对一映射的情况下,我得到的是null值



我有两个实体,如下所示:

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;

它运行良好。

相关内容

最新更新