0

我不断收到此错误:

Error saving identity in IdentityDaoImpl. Reason: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.domain.Identity.password

我在 OneToOneToOne 映射的基础上映射了 3 个表。

用户 -> 帐户 -> 身份

我现在如何拥有它,身份扩展帐户和帐户扩展用户。

也许我没有正确映射。我觉得这有点棘手,因为有 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;
}

}

4

2 回答 2

0
Error saving identity in IdentityDaoImpl. Reason: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.domain.Identity.password

您的密码和类型两个字段都可以为空,异常清楚地表明您正在尝试在密码中插入不能为空的空值。类型也不接受空值。

于 2012-06-04T14:02:53.227 回答
0

我们可以看看您是如何定义实体上的密码字段的吗?我猜你是想拯救某事。使用密码,null这违反了 an @NotNullor sth。喜欢required=true

于 2012-06-04T13:29:26.337 回答