【发布时间】:2013-11-08 21:00:02
【问题描述】:
一旦您看到我在代码块中发布的复合键和使用它们的实体,请参阅我需要在数据库中为 Address 实体提供的下一个伪表:
地址表:
ADDRESS
-------------------------------
DOCUMENTTYPE INT2 PK
DOCUMENTNR VARCHAR(10) PK
ALIAS VARCHAR(20) PK
FULLADDRESS VARCHAR(100)
...
实体和复合键:
@Embeddable
public class Document implements Serializable {
private DocumentType documentType;
private String documentNr;
...
@Entity
@IdClass(Document.class)
public class Person {
@Id
private DocumentType documentType;
@Id
private String documentNr;
private String fullName;
...
@Embeddable
public class AddressId implements Serializable {
private DocumentType documentType;
private String documentNr;
private String alias;
...
@Entity
@IdClass(AddressId.class)
public class Address {
@Id
@ManyToOne
private Person person;
@Id
private String alias;
private String fullAddress;
...
注意: DocumentType 是一个枚举。
好吧,我正在尝试为 Address 实体创建该映射,但它不起作用,我不知道为什么。它一直说(EclipseLink)我有名称和类型不匹配的问题。我不明白为什么如果 AddressId IdClass 没有别名属性(当然也没有 Address 实体)那么它就像一个魅力,以及具有完整的 AddressId IdClass(具有别名属性)但使用 EmbeddedId。我需要的是像我发布的那样拥有 Address 实体。
映射错误在哪里?
提前谢谢你!
【问题讨论】:
标签: java jpa orm mapping eclipselink