Szukaj…


Parametry

Adnotacja Detale
@OneToOne Określa relację jeden do jednego z odpowiednim obiektem.
@OneToMany Określa pojedynczy obiekt, który jest mapowany na wiele obiektów.
@ManyToOne Określa kolekcję obiektów odwzorowanych na pojedynczy obiekt.
@Entity Określa obiekt odwzorowany na tabelę bazy danych.
@Table Określa tabelę bazy danych, którą ten obiekt również odwzorowuje.
@JoinColumn Określa, w której kolumnie jest przechowywany klucz foregin.
@JoinTable Określa tabelę pośrednią, która przechowuje klucze obce.

Dwukierunkowy Wiele do wielu za pomocą zarządzanego przez użytkownika obiektu tabeli łączenia

@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.
}

Określa dwukierunkową relację między wieloma obiektami Foo do wielu obiektów Bar za pomocą pośredniej tabeli łączenia zarządzanej przez użytkownika.

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR . Relacje między obiektami Foo i Bar są przechowywane w tabeli o nazwie FOO_BAR . W aplikacji znajduje się obiekt FooBar .

Powszechnie używane, gdy chcesz przechowywać dodatkowe informacje o obiekcie łączenia, takie jak data utworzenia relacji.

wprowadź opis zdjęcia tutaj

Dwukierunkowa wiele do wielu za pomocą zarządzanej tabeli łączenia Hibernacja

@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;
}

Określa relację między wieloma obiektami Foo do wielu obiektów Bar za pomocą pośredniej tabeli łączenia zarządzanej przez Hibernację.

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR . Relacje między obiektami Foo i Bar są przechowywane w tabeli o nazwie FOO_BAR . Oznacza to jednak, że nie ma obiektu FooBar jako części aplikacji.

wprowadź opis zdjęcia tutaj

Dwukierunkowa relacja jeden do wielu przy użyciu mapowania klucza obcego

@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;
}

Określa dwukierunkową relację między jednym obiektem Foo a wieloma obiektami Bar za pomocą klucza obcego.

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR . Klucz obcy jest przechowywany w tabeli BAR w kolumnie o nazwie fooId .

wprowadź opis zdjęcia tutaj

Dwukierunkowy związek jeden do jednego zarządzany przez 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;
}

Określa dwukierunkową relację między jednym obiektem Foo a jednym obiektem Bar za pomocą klucza obcego.

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR . Klucz obcy jest przechowywany w tabeli FOO w kolumnie o nazwie barId .

Zauważ, że wartość mappedBy to nazwa pola na obiekcie, a nie nazwa kolumny.

wprowadź opis zdjęcia tutaj

Jednokierunkowa relacja jeden do wielu przy użyciu zarządzanej przez użytkownika tabeli łączenia

@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.
}

Określa jednokierunkową relację między jednym obiektem Foo a wieloma obiektami Bar za pomocą pośredniej tabeli łączenia zarządzanej przez użytkownika.

Jest to podobne do relacji ManyToMany , ale jeśli dodasz unique ograniczenie do docelowego klucza obcego, możesz wymusić, że jest to OneToMany .

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR . Relacje między obiektami Foo i Bar są przechowywane w tabeli o nazwie FOO_BAR . W aplikacji znajduje się obiekt FooBar .

Zauważ, że nie ma mapowania obiektów Bar powrotem na obiekty Foo . Bar obiektów można manipulować swobodnie bez wpływu Foo obiektów.

Bardzo często używany w Spring Security podczas konfigurowania obiektu User który ma listę Role , które mogą wykonywać. Możesz dodawać i usuwać role do użytkownika bez obawy o kaskadowe usuwanie Role .

wprowadź opis zdjęcia tutaj

Jednokierunkowy związek jeden do jednego

@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
}

Określa jednokierunkową relację między jednym obiektem Foo a jednym obiektem Bar .

Obiekty Foo są przechowywane jako wiersze w tabeli o nazwie FOO . Obiekty Bar są przechowywane jako wiersze w tabeli o nazwie BAR .

Zauważ, że nie ma mapowania obiektów Bar powrotem na obiekty Foo . Bar obiektów można manipulować swobodnie bez wpływu Foo obiektów.

wprowadź opis zdjęcia tutaj



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow