【发布时间】:2012-04-27 08:21:27
【问题描述】:
我正在使用 Hibernate 和 JPA。我有一个名为Customer 的实体,它引用了ParentCustomer:
public class Customer {
@Id
@GeneratedValue
@Column(name = "CustomerID")
private int id;
@ManyToOne
@JoinColumn(name = "ParentCustomerID")
private Customer parent;
// ...
}
但在我的数据库中,有些客户没有父级,因此 ParentCustomerID 设置为 0。我在测试我的课程时遇到的异常是:
javax.persistence.EntityNotFoundException: Unable to find it.keyforup.pat.data.entities.Customer with id 0
当 id 为 0 时,有没有办法将 ParentCustomer 设置为 null?
【问题讨论】:
-
你为什么说0?如果您希望实体为
null,则外键值应为null。 -
我正在处理第三方应用程序使用的数据库,当客户没有父级时,此应用程序将父级 ID 设置为 0...所以我会确保每次未找到父级
parent属性设置为 null。 -
但是这不是合法的数据库行为。此外,如果暗示了严格的数据库限制验证,他们甚至无法做到这一点..
-
我假设你正在使用键列 primitive 类型,这就是为什么插入 0 而不是 NULL 它不像stackoverflow.com/q/10110081/507864所说的那么好。