hibernate
Slaapstandrelaties met annotaties
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.
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.
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 .
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.
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.
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.





