我正在使用JPA 2,我的问题是关于JPA 2中的继承和覆盖映射。
我有一个抽象类[AbstractCompte]和两个叶子类[Compte,CompteTmp]。
我想重新定义一个字段nrCompte的映射。
nrCompte在Compte Class中必须是唯一的。 nrCompte在CompteTmp类中是非唯一的。
我已经测试了将@Column放在COmpte和CompteTmp的getter方法中并且它不起作用,结果是nrCompte始终不是唯一的。
@MappedSuperclass
public abstract class AbstractCompte{
@Id
@GeneratedValue
private Long id;
private String nrCompte;
....
....
}
@Entity
public class CompteTmp extends AbstractCompte {
@Column(length=16, unique = false)
public String getNrCompte() {
return super.getNrCompte();
}
}
@Entity
public class Compte extends AbstractCompte {
@Column(length=16, unique = true)
public String getNrCompte() {
return super.getNrCompte();
}
}
提前感谢您的帮助。
答案 0 :(得分:1)
JPA提供AttributeOverride
,因此您可以像这样映射:
@Entity
@AttributeOverride(name="nrCompte", column=@Column(unique=false))
public class CompteTmp extends AbstractCompte { ... }
@Entity
@AttributeOverride(name="nrCompte", column=@Column(unique=true))
public class Compte extends AbstractCompte { ... }