Jpa 如何覆盖超类中定义的唯一约束
下面是看起来像这样的超级类Jpa 如何覆盖超类中定义的唯一约束,jpa,Jpa,下面是看起来像这样的超级类 public abstract class BaseType { @Basic(optional = false) @Column(name = "code", length = 8, unique = true, nullable = false) private String code; ......... } public class ChildEntity extends BaseType { @Basic(o
public abstract class BaseType {
@Basic(optional = false)
@Column(name = "code", length = 8, unique = true, nullable = false)
private String code;
.........
}
public class ChildEntity extends BaseType {
@Basic(optional = false)
@Column(name = "group_id", nullable = false)
private Long groupId;
......
}
我继承了这个类,创建了一个JPA实体,如下所示
public abstract class BaseType {
@Basic(optional = false)
@Column(name = "code", length = 8, unique = true, nullable = false)
private String code;
.........
}
public class ChildEntity extends BaseType {
@Basic(optional = false)
@Column(name = "group_id", nullable = false)
private Long groupId;
......
}
我需要创建一个“代码”和“组id”的组合作为唯一的
我尝试添加唯一约束,但没有成功。只有“代码”总是被认为是唯一的,但不是两者都是
@Table(name = "table_name", uniqueConstraints = @UniqueConstraint(columnNames = {
"code", "group_id"}))
如何覆盖子类中BaseType中定义的unique=“true”
请提供帮助。您可以使用
@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;
}
您尝试添加代码和组id作为实体?的键。另一个问题是:哪一个是PK?。