下面是看起来像这样的超类。
public abstract class BaseType {
@Basic(optional = false)
@Column(name = "code", length = 8, unique = true, nullable = false)
private String code;
.........
}
我继承了这个类并创建了一个JPA实体,就像这样。
public class ChildEntity extends BaseType {
@Basic(optional = false)
@Column(name = "group_id", nullable = false)
private Long groupId;
......
}
我需要创建“code”和“group_id”的组合作为唯一。
我尝试过添加uniqueConstraints但没有用。并且只有“代码”始终被认为是唯一的,但不是两者。
@Table(name = "table_name", uniqueConstraints = @UniqueConstraint(columnNames = {
"code", "group_id"}))
如何覆盖子类中BaseType中定义的unique =“true”。
请帮忙。
答案 0 :(得分:3)
您可以使用@AttributeOverride
注释:
@Entity
@Table(name = "table_name")
@AttributeOverride(name = "code", column = @Column(name = "code", unique = false))
public class ChildEntity extends BaseType {
@Basic(optional = false)
@Column(name = "group_id", nullable = false)
private Long groupId;
}