我有一个Gfh_i18n
实体,带有一个复合键(@IdClass
):
@Entity @IdClass(es.caib.gesma.petcom.data.entity.id.Gfh_i18n_id.class)
public class Gfh_i18n implements Serializable {
@Id @Column(length=10, nullable = false)
private String localeId = null;
@Id <-- This is the attribute causing issues
private Gfh gfh = null;
....
}
和 id 类
public class Gfh_i18n_id implements Serializable {
private String localeId = null;
private Gfh gfh = null;
...
}
正如写的那样,这是有效的。问题是我还有一个与以下Gfh
内容有@OneToMany
关系的课程Gfh_i18n
:
@OneToMany(mappedBy="gfh")
@MapKey(name="localeId")
private Map<String, Gfh_i18n> descriptions = null;
使用 Eclipse Dali,这给了我以下错误:
In attribute 'descriptions', the "mapped by" attribute 'gfh' has an invalid mapping type for this relationship.
如果我只是尝试做,在Gfh_1i8n
@Id @ManyToOne
private Gfh gfh = null;
它解决了先前的错误,但给出了一个错误Gfh_i18n
,说明
The attribute matching the ID class attribute gfh does not have the correct type es.caib.gesma.petcom.data.entity.Gfh
这个问题与我的类似,但我不完全理解为什么我应该使用@EmbeddedId
(或者是否有某种方式可以使用@IdClass
with @ManyToOne
)。
我在 Hibernate (JBoss 6.1) 上使用 JPA 2.0
有任何想法吗?提前致谢。