执行select后,@ MappedSuperclass超类属性为空

时间:2013-03-11 16:17:24

标签: java hibernate jpa spring-mvc

我有以下情况:

我有一个超类,它有一个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

1 个答案:

答案 0 :(得分:1)

我已经使用了@MappedSuperclass多年,效果很好。你的代码示例是对的。请仔细检查您的真实代码,那里应该有一些手动错误。