20

@OneToMany 関係の場合、 Objects にマップする必要がありますか?

次の例があります

@Entity
@Table(name="FOO_TABLE")
public class Foo {

    @Id
    @Column(name="ID")
    @GeneratedValue
    private int id;

    ?????
    private List<String> bars;

}

バーがオブジェクトである場合、私はそうします

@ManyToOne
@JoinColumn(name="ID_FOO")

そして問題は解決されるでしょう。ただし、文字列のペア(参照キー、値)のみを表すオブジェクトを作成することは避けたいと思います。

FOO と BAR は別々のテーブルに格納されます

CREATE TABLE Foo (
    ID INTEGER NOT NULL AUTO_INCREMENT,
    //SOME OTHER PROPERTIES
    PRIMARY KEY( ID),
);

CREATE TABLE Bar (
    ID_FOO INTEGER,
    VAL VARCHAR(256),
    PRIMARY KEY (ID_FOO, VAL),
    FOREIGN KEY ( ID_FOO) REFERENCES Foo( ID) ON DELETE CASCADE
);
4

1 に答える 1

33

@ElementCollectionあなたが探しているものです。これにより、Embeddable や Basic などの非エンティティ クラスのマッピングを定義できます。

http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection

@CollectionTable を使用してテーブルを定義することもできます。

@ElementCollection
@CollectionTable(name = "data" ....)
private List<String> data;
于 2013-11-13T23:57:26.710 に答える