サーチ…


パラメーター

注釈詳細
@OneToOne 対応するオブジェクトとの1対1の関係を指定します。
@OneToMany 多くのオブジェクトにマップする単一のオブジェクトを指定します。
@ManyToOne 単一のオブジェクトにマップされるオブジェクトのコレクションを指定します。
@Entity データベーステーブルにマップするオブジェクトを指定します。
@Table このオブジェクトがマップするデータベーステーブルも指定します。
@JoinColumn foreginキーが格納されている列を指定します。
@JoinTable 外部キーを格納する中間テーブルを指定します。

ユーザー管理のジョイン・テーブル・オブジェクトを使用して、多対多の双方向

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany(mappedBy = "bar")
    private List<FooBar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToMany(mappedBy = "foo")
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar {
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}

ユーザーが管理する中間結合テーブルを使用して、多くのFooオブジェクトと多数のBarオブジェクトとの双方向の関係を指定します。

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。アプリケーションの一部としてFooBarオブジェクトがあります。

リレーションシップが作成された日付など、追加の情報をジョイン・オブジェクトに保存する場合に、一般的に使用されます。

ここに画像の説明を入力

Hibernateマネージド・ジョイン・テーブルを使用する多対多の双方向

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="fooId"),
        inverseJoinColumns = @JoinColumn(name="barId"))
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="barId"),
        inverseJoinColumns = @JoinColumn(name="fooId"))
    private List<Foo> foos;
}

Hibernateが管理する中間結合テーブルを使用して、多くのFooオブジェクトと多くのBarオブジェクトとの関係を指定します。

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。しかし、これは、アプリケーションの一部としてFooBarオブジェクトが存在しないことを意味します。

ここに画像の説明を入力

外部キーマッピングを使用した双方向1対多リレーションシップ

@Entity
@Table(name="FOO") 
public class Foo {
    private UUID fooId;
    
    @OneToMany(mappedBy = "bar")
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;
}

Fooオブジェクトと外部キーを使用する多くのBarオブジェクトとの間の双方向関係を指定します。

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。外部キーは、 fooIdという列のBARテーブルに格納されます。

ここに画像の説明を入力

Foo.classによって管理される双方向の一対一の関係

@Entity
@Table(name="FOO")    
public class Foo {
    private UUID fooId;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "barId")
    private Bar bar;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToOne(mappedBy = "bar")
    private Foo foo;
}

外部キーを使用して1つのFooオブジェクトと1つのBarオブジェクトの間の双方向関係を指定します。

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。外部キーは、 barIdという列のFOOテーブルに格納されFOO

mappedBy値は、オブジェクトのフィールド名であり、列名ではありません。

ここに画像の説明を入力

ユーザー管理のジョイン・テーブルを使用した単方向1対多リレーションシップ

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="fooId"),
        inverseJoinColumns = @JoinColumn(name="barId", unique=true))
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;

    //No Mapping specified here.
}

@Entity
@Table(name="FOO_BAR")
public class FooBar {
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId", unique = true)
    private Bar bar;

    //You can store other objects/fields on this table here.
}

ユーザーが管理する中間結合テーブルを使用して、1つのFooオブジェクトと多数のBarオブジェクトとの一方向の関係を指定します。

これはManyToMany関係に似ていますが、ターゲット外部キーにunique制約を追加すると、 OneToManyことを強制できOneToMany

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。アプリケーションの一部としてFooBarオブジェクトがあります。

Fooオブジェクトに戻るBarオブジェクトのマッピングがないことに注意してください。 BarオブジェクトはFooオブジェクトに影響を与えずに自由に操作できます。

実行できるRoleのリストを持つUserオブジェクトを設定するとき、Spring Securityでよく使用されます。あなたは、削除カスケードを気にすることなく、ユーザーに役割を追加および削除することができますRoleさんを。

ここに画像の説明を入力

単一指向の一対一の関係

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToOne
    private Bar bar;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    //No corresponding mapping to Foo.class
}

1つのFooオブジェクトと1つのBarオブジェクトの一方向の関係を指定します。

FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOOBarオブジェクトは、 BARというテーブルに行として格納されます。

Fooオブジェクトに戻るBarオブジェクトのマッピングがないことに注意してください。 BarオブジェクトはFooオブジェクトに影響を与えずに自由に操作できます。

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow