コード ブロックに投稿した複合キーとそれらを使用するエンティティが表示されたら、次の疑似テーブルを参照してください。住所エンティティ用にデータベースに含める必要があります。
アドレス テーブル:
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はenumです。
さて、私はAddressエンティティのマッピングをしようとしていますが、うまくいきません。理由はわかりません。名前と型が一致しないという問題があると (EclipseLink) 言い続けています。AddressId IdClass にエイリアス属性がない場合 (もちろんAddressエンティティもない場合)、完全なAddressId IdClass (エイリアス属性あり) と同様に魅力的に機能するが、EmbeddedId を使用する理由がわかりません. 私が必要とするのは、私が投稿したのと同じようにAddressエンティティを持つことです。
マッピングエラーはどこにありますか?
前もって感謝します!