假设我有2个这样的实体
class Parent {
String name;
Child children;
}
class Child {
String name;
Parent parent;
}
问题是,如果它与任何父级关联,我都不允许从数据库中删除子级->父级中的子级不能为null。有什么办法吗?每当我尝试从db中删除孩子时,我都可以使用一些forloop来检查它(例如查询所有父母并检查他们的childId),但这似乎不是很有效。
答案 0 :(得分:1)
您的问题定义不明确,但是我假设您使用的是@Entity之类的标签,因为您放置了Hibernate和jpa标签。
在这种情况下,您应该使用@OneToMany关系(父->子)和@ManyToOne在(子->父)中。如果这样做,其中之一将存储id(或您用作id列的任何值)。当您执行addParent方法和removeParent(来自Child)时,只是不要删除另一个而已。
答案 1 :(得分:1)
您的样本可能应该是:
public class Parent {
@Id
@GeneratedValue
private long id;
@OneToMany(optional=false)
private Set<Child> children;
// getter/setter
...
}
public class Child {
@Id
@GeneratedValue
private long id;
private String name;
// getter/setter
...
}
因此,请看以下注释:@OneToMany(optional = false),它用于强制执行NOT NULL约束。
在这里您可以找到更多信息:http://docs.jboss.org/hibernate/core/4.2/manual/en-US/html_single/#d5e5674