不同类/表之间的唯一约束(TABLE PER SUBCLASS)

时间:2012-03-27 21:40:55

标签: sql hibernate

我有一个继承自A的A类和一个B类.A类有一个特定的属性X.B类添加另一个属性Y.B的一个实例由它的一对属性{X,Y}唯一标识。因此,{X,Y}是B类的候选键。显然,由于属性Y不存在,因此A类中不存在该键。我为A班使用代理键。

现在,我使用Hibernate进行对象关系映射。如果我使用TABLE PER SUBCLASS继承策略,我看不到在属于不同类的多个属性(然后在DB中,到不同的表)上定义UNIQUE约束的可能性。

我的问题是如何使用Hibernate为这个候选键定义一个唯一约束,更常见的是在SQL中?如果不可能,你推荐什么?

由于

1 个答案:

答案 0 :(得分:1)

以下是两个解决方案:

  • 创建一个包含一列PK的新表。此表应包含您要使其唯一的所有值。为此表创建外键,以确保列上的域来自唯一表。
  • 创建在违反条件时引发错误的触发器。