Zoeken…


parameters

aantekening Details
@OneToOne Specificeert een één-op-één relatie met een overeenkomstig object.
@OneToMany Hiermee geeft u één object op dat aan veel objecten wordt toegewezen.
@ManyToOne Hiermee geeft u een verzameling objecten op die worden toegewezen aan één object.
@Entity Geeft een object op dat wordt toegewezen aan een databasetabel.
@Table Geeft aan welke databasetabel dit object ook toewijst.
@JoinColumn Hiermee geeft u op in welke kolom een sleutel voor het opslaan is opgeslagen.
@JoinTable Hiermee geeft u een tussentabel op waarin externe sleutels worden opgeslagen.

Bidirectioneel veel tot veel met door de gebruiker beheerd join-tabelobject

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

Hiermee geeft u een tweerichtingsrelatie op tussen veel Foo objecten en veel Bar objecten met behulp van een tussentijdse join-tabel die de gebruiker beheert.

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR . De relaties tussen Foo en Bar objecten worden opgeslagen in een tabel met de naam FOO_BAR . Er is een FooBar object als onderdeel van de toepassing.

Wordt meestal gebruikt wanneer u extra informatie over het join-object wilt opslaan, zoals de datum waarop de relatie is gemaakt.

voer hier de afbeeldingsbeschrijving in

Bidirectionele veel tot veel met behulp van Hibernate beheerde join-tabel

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

Specificeert een relatie tussen veel Foo objecten en veel Bar objecten met behulp van een tussentijdse join-tabel die Hibernate beheert.

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR . De relaties tussen Foo en Bar objecten worden opgeslagen in een tabel met de naam FOO_BAR . Dit betekent echter dat er geen FooBar object is als onderdeel van de toepassing.

voer hier de afbeeldingsbeschrijving in

Bidirectionele één-op-veel-relatie met behulp van externe sleuteltoewijzing

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

Hiermee geeft u een tweerichtingsrelatie op tussen één Foo object en veel Bar objecten met een externe sleutel.

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR . De externe sleutel wordt opgeslagen in de BAR tabel in een kolom met de naam fooId .

voer hier de afbeeldingsbeschrijving in

Bi-directionele één op één relatie beheerd door 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;
}

Hiermee geeft u een tweerichtingsrelatie op tussen een Foo object en een Bar object met een externe sleutel.

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR . De externe sleutel wordt opgeslagen in de FOO tabel in een kolom met de naam barId .

Merk op dat de waarde mappedBy de veldnaam van het object is, niet de kolomnaam.

voer hier de afbeeldingsbeschrijving in

Uni-directionele One to Many-relatie met door de gebruiker beheerde join-tabel

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

Hiermee geeft u een eenrichtingsrelatie op tussen één Foo object en veel Bar objecten met een tussentijdse join-tabel die de gebruiker beheert.

Dit is vergelijkbaar met een ManyToMany relatie, maar als u een unique beperking toevoegt aan de externe doelcode, kunt u afdwingen dat deze OneToMany .

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR . De relaties tussen Foo en Bar objecten worden opgeslagen in een tabel met de naam FOO_BAR . Er is een FooBar object als onderdeel van de toepassing.

Merk op dat er geen Bar objecten worden toegewezen aan Foo objecten. Bar objecten kunnen vrij worden gemanipuleerd zonder Foo objecten te beïnvloeden.

Zeer vaak gebruikt met Spring Security bij het instellen van een User met een lijst met Role die ze kunnen uitvoeren. U kunt rollen toevoegen en verwijderen voor een gebruiker zonder dat u zich zorgen hoeft te maken dat cascades Role verwijderen.

voer hier de afbeeldingsbeschrijving in

Unidirectionele één-op-één-relatie

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

Hiermee geeft u een eenrichtingsrelatie op tussen één Foo object en één Bar object.

De Foo objecten worden opgeslagen als rijen in een tabel met de naam FOO . De objecten Bar worden als rijen opgeslagen in een tabel met de naam BAR .

Merk op dat er geen Bar objecten worden toegewezen aan Foo objecten. Bar objecten kunnen vrij worden gemanipuleerd zonder Foo objecten te beïnvloeden.

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow