如何将@UniqueConstraint与单表inheritance(JPA)一起使用?

我有一个类使用单表策略扩展现有实体(我无法更改)。 我想为该实体使用UniqueConstraint,所以我试过:

@Entity @Table(name = "t_document") public class Document implements Serializable { ... } 

 @Entity @Table(uniqueConstraints = { @UniqueConstraint(name = "Test", columnNames = { ... }) }) public class MyDocument extends Document { ... } 

根本没有使用唯一约束,日志文件中没有任何内容。 这是在这种情况下使用UniqueConstraints的正确方法吗?

(我们使用JPA2,JBoss 7.1)

您不能覆盖基类@Table声明,这就是忽略子类uniqueConstraints指令的原因。

使用JPA,您可以使用xml声明覆盖注释 。 因此,您需要在class-pat中添加orm.xml文件并在其中添加唯一约束:

  ...   first_column second_column 

这样您甚至可能不需要MyDocument子类,如果您只使用它来覆盖DDL架构。