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.

ange bildbeskrivning här

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.

ange bildbeskrivning här

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 .

ange bildbeskrivning här

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.

ange bildbeskrivning här

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 .

ange bildbeskrivning här

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.

ange bildbeskrivning här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow