我试图创建一个Oracle数据库的约束,上面写着以下内容:创建多列约束,具体取决于列值
如果column1 == someValue
那么column2
和column3
组合必须与所有项独特column1 == someValue
我熟悉独特和检查约束的概念,我试着用这些结构表达约束。但是,我似乎无法找到一种方法来包含这种情况。这就是为什么我想知道这是否可能。
我想创建约束为的是Hibernate创建映射下面的类层次结构表(大部分中省略了简洁的属性):
class MyClass {
String name;
MyClass parent;
}
class MySubClass extends MyClass {
String businessValue;
}
类是使用一个表的策略,并使用不同的映射每种类型的鉴别器值。客户要求对于MySubClass
的所有实例,名称和父项的组合必须是唯一的(第1列将是鉴别器值)。通过表约束可以很容易地对父类实施这样的约束。但是,该限制仅适用于MySubClass
。
在使用Hibernate Validator等框架将数据输入数据库之前,有可能验证数据。但是由于无论如何验证都需要数据库访问,所以数据库约束似乎是更好的性能节省方式。
我很高兴看到一位ORM开发者意识到使用数据库约束的好处! – 2012-03-20 14:01:39