gpt4 book ai didi

java - Hibernate:覆盖实体getter以添加注释

转载 作者:行者123 更新时间:2023-11-30 08:55:00 26 4
gpt4 key购买 nike

我需要覆盖一个实体对象的 getter,在它的父类(super class)中定义了 db 列,这样我就可以添加额外的注释。

例子:

@MappedSuperclass
public class Person {

String name;

@Column(name = "name")
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

@Entity
@Table(name="employee")
@XmlType(name="employee")
public class Employee extends Person {

@Override
@XmlAttribute(name = "name")
public String getName() {
return super.getName();
}

}

Person 包含多个实体的公共(public)属性。类 Employee 扩展了 person 并定义了一个数据库表(每个类策略的表)。我还想将类 Employee 序列化为 XML,因此我需要向它的 getter 添加额外的注释,因此我要覆盖它们。

问题是当我尝试运行这段代码时,我得到一个 Hibernate MappingException 说:Duplicate property mapping of name found in Employee。

有没有办法告诉 Hibernate Employee 中的名称 getter 不是重复的,而只是被覆盖了(可能有一些注释)。还是有其他方法可以满足我的需要?

最佳答案

尝试将 @Transient 添加到覆盖属性:

@Entity
@Table(name="employee")
@XmlType(name="employee")
public class Employee extends Person {

@Override
@XmlAttribute(name = "name")
@Transient
public String getName() {
return super.getName();
}

}

关于java - Hibernate:覆盖实体getter以添加注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com