当我尝试保留A class Object
时,我收到此错误:
Detail: Key (classB)=() is not present in table "b".
我需要有可能在引用的列上插入null对象。
问题是hibernate将null值转换为空字符串,所以当我尝试持久化该对象时,它会失败。
如果我将cascade = CascadeType.ALL
放在@ManyToOne
上,但它会在B table
上创建一行ID为0且空字符串为refColName
值。我想避免这种情况,因为de A class是孩子,而级联应该是B类。
@Entity
@Table
public class A {
...
@ManyToOne
@JoinColumn(name = "class_b", referencedColumnName = "refColName", nullable = true)
private B classB;
...
}
@Entity
@Table
public class B {
...
@Id
@Column (name = "id")
private long id;
@Column(name = "refColName")
private String refColName;
...
}
有什么建议吗? 谢谢你的时间
编辑:
这是单向关系,其中B是主数据表,所以我有预定义的值。 refColName应该是一个String。我使用referencedColumnName因为我不能将id作为外键。
答案 0 :(得分:0)
我需要有可能在null上插入null对象 参考专栏。
请确保要保留的classA输入应如下所示(在json中表示)
{
classB:null
}
而不是
{
classB:{
refColName:null
}
}