我有以下情况:
我有一个超类,它有一个String属性“A”和一个子类@Entity,它从映射的超类扩展而且有另一个字符串属性B.
我不需要插入,我只需要选择表B。
但是,当我查询B类时,hibernate从B加载所有属性,但是,没有加载映射的超类属性,所以,如果我做B.getPropertyB()包含正确的值,但是,如果我做B.getPropertyA()它总是返回null。
这些类看起来像这样:
@MappedSuperclass
public abstract class BaseContributorEntity extends BaseEntity<Long> implements Comparable<BaseContributorEntity> {
private String propertyA;
@Column(name = "column_a", length = 450)
public String getPropertyA() {
return propertyA;
}
public void setPropertyA(String value) {
this.propertyA = value;
}
}
@Entity
@Table(name = "work_contributor")
public class WorkContributorEntity extends BaseContributorEntity {
.... Other properties, including @id ....
private String propertyB;
@Column(name = "column_b", length = 450)
public String getPropertyB() {
return propertyB;
}
public void setPropertyB(String value) {
this.propertyB = value;
}
.... Other setters and getters ....
}
有人知道为什么会这样吗?
我应该重载映射超类A的getter吗?
我正在使用hibernate 3.6.3和JPA 2.0
答案 0 :(得分:1)
我已经使用了@MappedSuperclass多年,效果很好。你的代码示例是对的。请仔细检查您的真实代码,那里应该有一些手动错误。