gpt4 book ai didi

java - Hibernate:跨多个表的@UniqueConstraint?

转载 作者:行者123 更新时间:2023-12-02 07:26:10 26 4
gpt4 key购买 nike

我有一个数据模型,其中许多实体从单个父类(super class)实体继承一些公共(public)属性。我在父类(super class)上使用 InheritanceType.JOINED ,这会导致 Hibernate 为父类(super class)中定义的属性创建单个表,子类表仅包含子类添加的列(以便加载属性对于子类实例,在两个表之间执行联接)。一切正常。

但是,我想做的是指定一个唯一约束,其中包括子类表和父类(super class)表中的字段。例如,假设我的父类(super class)实体类似于:

Thing: {id, name}

...然后我有一些子类实体,例如:

Company: {address}  //inherits 'id' and 'name' from 'Thing'
Employee: {company} //inherits 'id' and 'name' from 'Thing'

...并且我想将 Hibernate 配置为自动强制指定的 Company 不能有两个同名的 Employeecompany 字段在 Employee 表中,但 name 字段在 Thing 表中,所以有有什么方法可以让 Hibernate 强制执行此约束,或者每当我添加新的 Employee 时是否需要以编程方式执行此操作?

最佳答案

如果在数据库中不可能,那么在 Hibernate 中也不可能。您无法使用 SQL 在多个表上创建一个约束,因此在 Hibernate 中也是如此。

您可以通过创建一个仅包含公司和员工 ID 的新实体并在这两个字段上设置唯一约束来解决此问题,但我建议以编程方式强制执行此操作。

关于java - Hibernate:跨多个表的@UniqueConstraint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com