我正在使用 JPA 2,我的问题是关于 JPA 2 中的继承和覆盖映射。
我有一个抽象类 [AbstractCompte] 和两个叶子类 [Compte , CompteTmp]。
我想重新定义一个字段 nrCompte 的映射。
nrCompte 在 Compte 类中必须是唯一的。 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();
}
}
预先感谢您的帮助。
最佳答案
JPA 优惠<a href="http://docs.oracle.com/javaee/6/api/javax/persistence/AttributeOverride.html" rel="noreferrer noopener nofollow">AttributeOverride</a>
,所以你可以像这样映射它:
@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 { ... }
关于java - 覆盖叶类中的 JPA 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17612620/