aro*_*oth 2 java inheritance hibernate unique-constraint
我有一个数据模型,其中许多实体从单个超类实体继承一些公共属性.我InheritanceType.JOINED在超类上使用,这导致Hibernate为超类中定义的属性创建单个表,子类表只包含由子类添加的列(因此要加载子类实例的属性,之间执行连接两个表).这一切都很好.
但是,我想要做的是指定一个唯一约束,该约束包括子类和超类表中的字段.例如,假设我的超类实体是这样的:
Thing: {id, name}
Run Code Online (Sandbox Code Playgroud)
...然后我有一些子类实体,如:
Company: {address} //inherits 'id' and 'name' from 'Thing'
Employee: {company} //inherits 'id' and 'name' from 'Thing'
Run Code Online (Sandbox Code Playgroud)
...并且我想配置Hibernate以自动强制给定Company不能具有Employee相同名称的两个.该company字段在Employee表中,但该name字段在Thing表中,所以有没有办法让Hibernate强制执行此约束,或者我是否需要在添加新的时以编程方式执行此操作Employee?
如果在数据库中无法实现,那么Hibernate将无法实现.您不能使用SQL在多个表上创建一个约束,因此在Hibernate中也不能.
您可以通过创建一个仅包含公司和员工ID并在这两个字段上设置唯一约束的新实体来解决此问题,但我建议以编程方式强制执行此操作.
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |