0

FOO_ID のみを使用して、bar オブジェクトのリストを Foo オブジェクトにどのようにマップしますか?

@Entity
@Table(name="FOO")
class Foo {
    @EmbeddedId
    private FooPK primaryKey;

    @OneToMany
    @JoinColumn(name="FOO_ID", referencedColumnName="FOO_ID") //does not work
    private List<Bar> bars;
}

@Embeddable
class FooPK {
    @Column(name="FOO_ID")
    private String id;

    @Column(name="FOO_SUB_ID")
    private String subId;
}

@Entity
@Table(name="BAR")
class Bar {
    @EmbeddedId
    private BarPK primaryKey;

    //other attributes and methods
}

@Embeddable
class BarPK {
    @Column(name="FOO_ID")
    private String id;

    @Column(name="BAR_ID")
    private String barId;

    @Column(name="BAR_SUB_ID")
    private String barSubId;
}

私は試しました: @JoinColumn (上記のように) と @JoinTable を、主キーとして FOO_ID を含む別のテーブルに設定しました。どちらも機能しません。

4

1 に答える 1

0

ここで説明されているように試してください: http://stackoverflow.com/questions/5305687/join-entity-with-composite-key

Foo特別なマッピングは行いません:

class Foo {
    @EmbeddedId
    private FooPK primaryKey;

    @OneToMany(mappedBy="foo")
    private List<Bar> bars;
}

したがって、反対側にマッピングします。

class Bar {
    @EmbeddedId
    private BarPK primaryKey;

    @ManyToOne
    @MapsId("id")
    private Foo foo;
}
于 2013-03-22T16:39:01.400 に答える