我认为我做错了什么但是我不能用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>