java - 覆盖叶类中的 JPA 映射

标签 java hibernate jpa-2.0

我正在使用 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/

相关文章:

java - 独立加速发生器

java - 更改去电号码,添加前缀

java - catch语句错误代码

java - 你如何学习一个框架?

java - 不同 Hibernate session 中对象的可见性

spring - JPA:删除分离的实例

java - 每个主题是否可以有一个 Kafka 消费者线程?

java - hibernate 搜索 : Not tokenized query

java - 当主键为 UUID 时,JPA 2 合并是插入而不是更新

java - 在 Java SE 应用程序中使用 JPA 支持事务