hibernate
Hibernate Entity Relationships med hjälp av kommentarer
Sök…
parametrar
| Anteckning | detaljer |
|---|---|
@OneToOne | Anger ett förhållande till ett med ett motsvarande objekt. |
@OneToMany | Anger ett enda objekt som kartlägger till många objekt. |
@ManyToOne | Anger en samling objekt som kartläggs till ett enda objekt. |
@Entity | Anger ett objekt som kartläggs till en databastabell. |
@Table | Anger vilken databastabell detta objekt också kartar. |
@JoinColumn | Anger vilken kolumn en föregående nyckel lagras i. |
@JoinTable | Anger en mellanliggande tabell som lagrar utländska nycklar. |
Två-riktning Många till många med hjälp av användarhanterade gå med tabellobjekt
@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.
}
Anger ett tvåvägsförhållande mellan många Foo objekt till många Bar objekt med en mellanliggande sammanfogningstabell som användaren hanterar.
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR . Förhållandena mellan Foo och Bar objekt lagras i en tabell som heter FOO_BAR . Det finns ett FooBar objekt som en del av applikationen.
Vanligtvis används när du vill lagra extra information om kopplingsobjektet, t.ex. det datum då förhållandet skapades.
Två-riktning Många till många som använder Hibernate hanterade sammanfogningstabell
@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;
}
Anger en relation mellan många Foo objekt till många Bar objekt med hjälp av en mellanliggande sammanfogningstabell som Hibernate hanterar.
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR . Förhållandena mellan Foo och Bar objekt lagras i en tabell som heter FOO_BAR . Men det innebär att det inte finns något FooBar objekt som en del av applikationen.
Två-riktad relation mellan ett och många med hjälp av utländsk nyckelkartläggning
@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;
}
Anger ett tvåvägsförhållande mellan ett Foo objekt till många Bar objekt med hjälp av en främmande nyckel.
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR . Den utländska nyckeln lagras på BAR bordet i en kolumn som heter fooId .
Dubbelriktad en-till-relation som hanteras av 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;
}
Anger ett tvåvägsförhållande mellan ett Foo objekt till ett Bar objekt med hjälp av en främmande nyckel.
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR . Den främmande nyckeln lagras på FOO tabellen i en kolumn som heter barId .
Observera att värdet mappedBy är fältnamnet på objektet, inte kolumnnamnet.
Uni-Directional One to Many Relationship med användarhanterad sammanfogningstabell
@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.
}
Anger ett enkelriktat förhållande mellan ett Foo objekt till många Bar objekt med hjälp av en mellanliggande sammanfogningstabell som användaren hanterar.
Detta liknar ett ManyToMany förhållande, men om du lägger till en unique begränsning till den utländska målnyckeln kan du säkerställa att det är OneToMany .
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR . Förhållandena mellan Foo och Bar objekt lagras i en tabell som heter FOO_BAR . Det finns ett FooBar objekt som en del av applikationen.
Observera att det inte finns någon kartläggning av Bar objekt tillbaka till Foo objekt. Bar objekt kan manipuleras fritt utan att påverka Foo objekt.
Mycket vanligt med Spring Security när du ställer in en User objekt som har en lista med Role 'är att de kan utföra. Du kan lägga till och ta bort roller till en användare utan att behöva oroa dig för att kaskader raderar Role .
Envägsriktad en-till-relation
@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
}
Anger en enkelriktad relation mellan ett Foo objekt till ett Bar objekt.
Foo objekt lagras som rader i en tabell som heter FOO . De Bar objekten lagras som rader i en tabell som heter BAR .
Observera att det inte finns någon kartläggning av Bar objekt tillbaka till Foo objekt. Bar objekt kan manipuleras fritt utan att påverka Foo objekt.





