多态关联jpa2休眠

时间:2015-05-14 17:04:59

标签: java hibernate jpa polymorphic-associations

我认为我做错了什么但是我不能用jpa2 1.0.1在hibernate 4.2.2上运行@any注释

班级工作正常,但我无法加入。

我的代码是:

@Entity(name = "conta")
public class Conta {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "empresa_id")
private int empresaId;
private String descricao;

@Any(metaColumn = @Column(name = "tipo"), fetch = FetchType.EAGER)
@AnyMetaDef(idType = "int", metaType = "string", metaValues = {
        @MetaValue(value = "BANCO", targetEntity = Banco.class),
        @MetaValue(value = "CIELO", targetEntity = Cielo.class)
})
@JoinColumn(name = "financeira_id")
private Financeira financeira;
//getters and setters
}

Financeira是一个接口,Banco.class和Cielo.class也实现了Conta。当我尝试从DB获取时,我可以获得所有记录,但是连接不会发生。

我对Intellij IDEA的代码检查说 private Financeira financeira " ' Basic'属性类型不应该是' Financeira' "。我知道或者我想我知道这条消息说jpa没有@any注释的元模型,但是hibernate确实如此,所以,这应该可行吗?

更新

使用hibernate native xml配置解决了问题。 现在我可以坚持我的对象,但我有另一个问题。我无法获取关联,我使用工厂来获取@postLoad事件的de关联,但那不是正确的方式。

在我的xml代码之上。

        <any id-type="java.lang.Integer" meta-type="string" name="tipo" cascade="all">
        <meta-value value="BANCO" class="br.com.leaftecnologia.lfadmin.model.financeiro.BANCO" />
        <meta-value value="PLAYSMS" class="br.com.leaftecnologia.lfadmin.model.financeiro.CIELO" />
        <column name="tipo" />
        <column name="financeira_id" /></any>

0 个答案:

没有答案