java - 如何覆盖@MappedSuperclass 的子类中的参数

标签 java hibernate mappedsuperclass

我有一个映射父类(super class)

@MappedSuperclass
public class A{
    .
    .
    .
    @Column(name="something")
    public getSomething(){..};
    public setSomething(){..};
}

我想覆盖子类中的东西

@Entity
public class B{
    @Override
    public getSomething(){..};
}

但得到 Caused by: org.hibernate.MappingException: Duplicate property mapping of data found 异常

我尝试了不同的东西,比如“@AttributeOverride”注释,但没有用。

我知道的唯一解决方案是在 mappedSuperclass 中使 something transient 。但我不希望它在这里是 transient 的(因为还有另一个子类不想覆盖 something 但希望它是 transient 的)

最佳答案

我想到了两个解决方案:一个是可能将这个 SuperClass 分解并使用 Embeddeds 来创建您想要的层次结构。如果你想坚持使用这种方法,我认为你需要使用 @AttributeOverride 覆盖子类中的属性和方法都是这样的:

@Entity
public class B {

    @AttributeOverride(name = "fred", column = @Column(name = "FRED"))
    private Integer fred;

    @Override
    public Integer getFred() {return fred;}
}

关于java - 如何覆盖@MappedSuperclass 的子类中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092204/

相关文章:

java - 当尝试以相反的顺序读取两个标准时,为什么我的输出为空白?

java - Hazelcast 的 IScheduledExecutorService 无法序列化任务

java - 没有 [javax.persistence.EntityManager] 类型的限定 bean

没有带注解的 spring hibernate

php - Silex + Doctrine ORM 在@MappedSuperclass 上设置时不会触发事件

java - OutOfMemoryErrors 即使​​在对键和值使用 Wea​​kReference 之后

java - 如何更改实例变量的值

java - Spring 数据与 Scala

java - JPA @MappedSuperclass 子类的不同 Id 计数器

java - JPA 继承 - 如何选择每个子类型的 3 个实体?