我的实体出错了,我的表是:
LANGUAGE
codLanguage(主键)
nameLanguage
设备
idDevice(主键)
nameDevice
语
idPhraseGroup(主键)
codlanguage(主键)
idDevice (主键)
tex
我的实体短语有问题,它是:
public class Phrase implements Serializable {
@EmbeddedId
private PhraseKey idPhrase;
private String text;
//etc
//here my problem (*)
@OneToMany(mappedBy="idPhrase.idPhraseGroup",fetch=FetchType.EAGER)
@JoinColumn(name = "idPhrase.idPhraseGroup", updatable = false, insertable = false, referencedColumnName = "idPhrase.idPhraseGroup")
private List<Phrase> groupListPhrase;
}
@Embeddable
public class PhraseKey implements Serializable {
private Integer idPhraseGroup;
private String codLanguage;
private String idDevice;
---getter e setter
}
我想获得具有相同idPhraseGroup的短语列表 例如在短语表中:
idPhraseGroup | codLang | idDevice |文字
1 | ES | 1 |梅萨
1 | EN | 1 |表
..但我有这个错误:
异常说明:遇到了不兼容的映射 这通常发生在映射的基数没有时 与其backpointer的基数相对应
Thanxs
答案 0 :(得分:0)
我不明白你为什么需要这个映射,或者它是如何工作的。您不能在oneToMany上的mappedBy中使用基本映射“idPhrase.idPhraseGroup”字段,因为它不描述关系。 oneToMany通常依赖于另一方拥有manyToOne,但在这种情况下你不会。
如果你想要的只是具有特定idPhaseGroup的短语实体的集合,只需使用以下方法查询它: em.createQuery(“从p中选择p,其中p.idPhrase.idPhraseGroup =:phaseGroup”)。setParameter(“phaseGroup”,phaseGroupId);
我会删除映射,除非你真的需要在Phaze实体中缓存它。如果你这样做,它会更好地映射如下: @OneToMany @JoinColumn(name =“IDPHASEGROUP”,referencedColumnName =“IDPHASEGROUP”,insertable = false,updatable = false) private List groupListPhrase;