1

我有以下情况:

我有一个超类,它有一个字符串属性“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 的吸气剂吗?

我正在使用休眠 3.6.3 和 JPA 2.0

4

1 回答 1

0

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

于 2013-03-11T16:23:31.963 回答