Hibernate注释@Table@UniqueConstraint继承

Hibernate注释@Table@UniqueConstraint继承,hibernate,unique-constraint,hibernate-annotations,Hibernate,Unique Constraint,Hibernate Annotations,我有一个用于Hibernate的Java模型,其中映射是通过注释完成的。 我有一个抽象的@MappedSuperClass,其中包含需要唯一的属性,因此我使用了带有一些@UniqueConstraint的@Table注释 我的问题是这些约束不是孩子们继承的。 如果我复制/粘贴每个子类中的唯一约束,效果会很好,但在我看来,应该存在一个更干净的解决方案:) 以下是相关代码: @MappedSuperClass @Table(uniqueConstraints = @UniqueConstraint(

我有一个用于Hibernate的Java模型,其中映射是通过注释完成的。
我有一个抽象的
@MappedSuperClass
,其中包含需要唯一的属性,因此我使用了带有一些
@UniqueConstraint
@Table
注释

我的问题是这些约束不是孩子们继承的。 如果我复制/粘贴每个子类中的唯一约束,效果会很好,但在我看来,应该存在一个更干净的解决方案:)

以下是相关代码:

@MappedSuperClass
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"firstname", "lastname"}))
public abstract class Person {
  private String firstname;
  private String lastname;

  // Constructors/Getters/Setters
}

@Entity
@Table(name = "employee")
public class Employee extends Person {
  // Some specific properties, constructors, getters/setters
}

@Entity
@Table(name = "partner")
public class Partner extends Person {
  // Some specific properties, constructors, getters/setters
}


public void testCase() {
  Employee employee1 = new Employee("John", "Doe");
  Employee employee2 = new Employee("John", "Doe");

  this.employeeDAO.save(employee1);
  this.employeeDAO.save(employee2); // I'd like an exception here!
}
有没有一种方法可以在不在每个子类中重复约束的情况下使约束生效


谢谢你的帮助

您可以尝试删除@Table并在MappedSuperClass中的属性上放置@Column(unique=true)吗?嘿,谢谢您的回答。问题是,我不希望属性单独是唯一的,但我需要一个由这两个属性组成的对的唯一约束。我有同样的问题。虽然我的子实体上没有@Table注释,但超类中的表注释仍然没有被继承。你找到解决办法了吗?顺便说一句,我甚至不能将约束复制到子实体,因为Hibernate抛出异常,说“找不到数据库列'columnname'。(coulmnname在父实体中定义)我没有找到任何解决方案,最后复制/粘贴了约束…:(