休眠:@UniqueConstraint跨多个表?

| 我有一个数据模型,其中许多实体从单个超类实体继承一些公共属性。我在超类上使用
InheritanceType.JOINED
,这会导致Hibernate为超类中定义的属性创建一个表,而子类表仅包含由子类添加的列(因此要加载子类实例的属性,将执行联接在两个表之间)。一切正常。 但是,我想做的是指定一个唯一的约束,该约束包括子类和超类表中的字段。例如,假设我的超类实体类似于:
Thing: {id, name}
...然后我有一些子类实体,例如:
Company: {address}  //inherits \'id\' and \'name\' from \'Thing\'
Employee: {company} //inherits \'id\' and \'name\' from \'Thing\'
...并且我想将Hibernate配置为自动强制给定的
Company
不能有两个同名的
Employee
\。
company
字段在
Employee
表中,而
name
字段在
Thing
表中,那么有什么方法可以让Hibernate强制执行此约束,还是每当我添加新的
Employee
时都需要以编程方式进行操作吗?     
已邀请:
如果无法在数据库中使用Hibernate,那将是不可能的。您不能使用SQL在多个表上创建一个约束,因此在Hibernate中都不能创建一个约束。 您可以通过创建一个仅包含公司和员工ID的新实体并在这两个字段上设置唯一约束的方法来解决此问题,但是我建议以编程方式强制执行此操作。     
您不能使用
InheritanceType.JOINED
,然后所有内容最终都放在一个巨大的表中,并且可以编写约束。如前所述:在关系数据库中根本无法实现所需的功能。     

要回复问题请先登录注册