我需要重写一个实体对象的getter,在它的超类中定义了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
包含几个实体共同属性。 Employee
类扩展person并定义一个数据库表(每个类的策略表)。我也想将Employee
类序列化为XML,所以我需要向其getter添加额外的注释,因此我重写了它们。
问题是,当我尝试运行此代码时,我得到一个休眠MappingException
说:在Employee中找到名称的重复属性映射。
有没有办法告诉Hibernate,Employee中的名字getter不是重复的,而是重写(可能带有一些注释)。还是有另一种方法来做我所需要的?
这个确切的事情来到我的脑海后我写完这个问题。我试过了,它似乎工作,但我不喜欢它,因为它看起来很混乱,因为实际上持久化的属性上存在@Transient注解。但如果没有更好的东西出现,我会坚持这个解决方案。谢谢。 – Jardo 2015-03-25 09:48:01
不幸的是,Java方法重写并不适用于JPA元数据。 – 2015-03-25 09:49:42