我一直收到这个错误:
Error saving identity in IdentityDaoImpl. Reason: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.domain.Identity.password
我在OneToOneToOne映射的基础上映射了3个表。
用户 - >帐户 - >身份
我现在如何拥有,Identity扩展了帐户和帐户扩展用户。
也许我没有正确映射。我发现它有点棘手,因为有3对一关系而不是2 ...
这样做的正确方法是什么?
编辑1:
我已经将所有merge()方法更改为save(),但它没有解决问题。
编辑2:
这是我的实体的干净版本:
@Entity()
@Table(name = "`user`")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING, name = "type")
@DiscriminatorValue("")
public class User extends ActionSupport implements UserDetails, Serializable {
private static final long serialVersionUID = -7480567862246640031L;
private Integer ID;
private String type;
private String password;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
@Column(name = "type", nullable = false, unique = false, length = 255)
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
@Column(name = "password", nullable = false, length = 255)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
答案 0 :(得分:0)
我们能看到您如何在实体上定义密码字段吗?我想你是想拯救某事。密码为null
,这违反了@NotNull
或者......比如required=true
答案 1 :(得分:0)
Error saving identity in IdentityDaoImpl. Reason: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.domain.Identity.password
您的密码和类型这两个字段都是可为空的,Exception清楚地表明您正在尝试在密码中插入null值,该值不能为null。此类型也不接受空值。