【发布时间】:2014-04-25 13:15:03
【问题描述】:
假设我有以下实体关系:
一个人有很多宠物
一个人有很多玩具
一只宠物有很多玩具
人物 1 ----> * 宠物
人物 1 ----> * 玩具
宠物 * ----> * 玩具
我想强制执行以下事实:一只宠物只能从拥有他的人那里获得玩具。我不知道是否可以在数据库级别做到这一点。
【问题讨论】:
假设我有以下实体关系:
一个人有很多宠物
一个人有很多玩具
一只宠物有很多玩具
人物 1 ----> * 宠物
人物 1 ----> * 玩具
宠物 * ----> * 玩具
我想强制执行以下事实:一只宠物只能从拥有他的人那里获得玩具。我不知道是否可以在数据库级别做到这一点。
【问题讨论】:
您可以尝试创建自定义检查约束,下面的链接将帮助您这样做:-
在 ConstraintValidator 的 isValid() 方法中,您可以获取人员的 toyIds 列表并根据您的 toyId 输入列表验证它们
public class ValueValidator implements ConstraintValidator<CheckCase, String> {
private ValueMode valueMode;
public void initialize(CheckCase constraintAnnotation) {
this.valueMode= constraintAnnotation.value();
}
public boolean isValid(String object, ConstraintValidatorContext constraintContext) {
// You can have your logic here and can validate the same.
// Here you can fetch the ToyIds and validate the same from below list of ToyIds
//select p.toyID from Person p join Toy t where p.toyID = t.toyId and p.petId in (Input list of toyids)
}
【讨论】: