小编use*_*634的帖子

使用接口覆盖@Embedded的@ManyToOne targetEntity

我正在为ORM使用hibernate和annotations.我有所有bean的接口,我使用targetEntity作为关系:hibernate无法派生类型,因为getter返回一个接口而不是bean.

我得到嵌入式bean的MappingException(无法确定类型).

@Entity(name="FieldBean")
public class FieldBean implements Field {
    ...
}

@Embeddable
public class FacetBean implements Facet {
    ...    

    @ManyToOne(targetEntity = FieldBean.class)
    @JoinColumn(name = "field_id")
    public Field getField() {
        return field;
    }

}

@Entity(name = "Chart")
public class ChartBean implements Chart {

    @Embedded
    @AssociationOverride(
        name = "field",
        joinColumns = @JoinColumn(name = "category_facet_field_id")
    )
    public Facet getCategoryFacet() {
        return categoryFacet;
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到MappingException:无法确定类型:Field,at table:chart,for columns:[org.hibernate.mapping.Column(field)]

使用bean而不是接口来获取属性和getter/setter声明解决了这个问题,但我想坚持使用接口.单独使用bean进行属性声明并不能解决问题.

有人能指出我正确的方向吗?

hibernate jpa

8
推荐指数
1
解决办法
2900
查看次数

标签 统计

hibernate ×1

jpa ×1