1

我正在使用 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();
   }
}

在此先感谢您的帮助 。

4

1 回答 1

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 { ... }
于 2013-07-12T10:23:40.687 回答