Ricerca…


Parametri

Annotazione Dettagli
@OneToOne Specifica una relazione uno a uno con un oggetto corrispondente.
@OneToMany Specifica un singolo oggetto che si associa a molti oggetti.
@ManyToOne Specifica una raccolta di oggetti che si associano a un singolo oggetto.
@Entity Specifica un oggetto che si associa a una tabella di database.
@Table Specifica quale tabella di database viene mappata anche da questo oggetto.
@JoinColumn Specifica in quale colonna è memorizzata una chiave di foregin.
@JoinTable Specifica una tabella intermedia che memorizza le chiavi esterne.

Multi-direzionale Molti a molti utilizzando l'oggetto tabella di join gestito dall'utente

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

Specifica una relazione a due vie tra molti oggetti Foo su molti oggetti Bar usando una tabella di join intermedia che l'utente gestisce.

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR . Le relazioni tra gli oggetti Foo e Bar sono memorizzate in una tabella chiamata FOO_BAR . C'è un oggetto FooBar come parte dell'applicazione.

Comunemente utilizzato quando si desidera memorizzare informazioni aggiuntive sull'oggetto join, ad esempio la data di creazione della relazione.

inserisci la descrizione dell'immagine qui

Multi-direzionale Molti a molti utilizzando la tabella di join gestita da Hibernate

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

Specifica una relazione tra molti oggetti Foo su molti oggetti Bar utilizzando una tabella di join intermedia gestita da Hibernate.

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR . Le relazioni tra gli oggetti Foo e Bar sono memorizzate in una tabella chiamata FOO_BAR . Tuttavia ciò implica che non vi è alcun oggetto FooBar come parte dell'applicazione.

inserisci la descrizione dell'immagine qui

Relazione bi-direzionale da uno a molti utilizzando la mappatura delle chiavi esterne

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

Specifica una relazione bidirezionale tra un oggetto Foo e molti oggetti Bar utilizzando una chiave esterna.

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR . La chiave esterna è memorizzata nella tabella BAR in una colonna chiamata fooId .

inserisci la descrizione dell'immagine qui

Relazione bi-direzionale uno-a-uno gestita da 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;
}

Specifica una relazione bidirezionale tra un oggetto Foo e un oggetto Bar utilizzando una chiave esterna.

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR . La chiave esterna è memorizzata nella tabella FOO in una colonna denominata barId .

Si noti che il valore mappedBy è il nome del campo sull'oggetto, non il nome della colonna.

inserisci la descrizione dell'immagine qui

Relazione unidirezionale unidirezionale con la tabella di join gestita dall'utente

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

Specifica una relazione unidirezionale tra un oggetto Foo e molti oggetti Bar utilizzando una tabella di join intermedia che l'utente gestisce.

Questo è simile a una relazione ManyToMany , ma se si aggiunge un vincolo unique alla chiave esterna di destinazione è possibile far rispettare che è OneToMany .

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR . Le relazioni tra gli oggetti Foo e Bar sono memorizzate in una tabella chiamata FOO_BAR . C'è un oggetto FooBar come parte dell'applicazione.

Si noti che non vi è alcuna mappatura degli oggetti Bar indietro agli oggetti Foo . Bar oggetti della Bar possono essere manipolati liberamente senza influenzare gli oggetti Foo .

Molto comunemente usato con Spring Security quando si imposta un oggetto User che ha un elenco di Role che possono eseguire. È possibile aggiungere e rimuovere i ruoli ad un utente, senza doversi preoccupare di cascate eliminazione Role s'.

inserisci la descrizione dell'immagine qui

Relazione One-One unidirezionale

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

Specifica una relazione unidirezionale tra un oggetto Foo e un oggetto Bar .

Gli oggetti Foo sono memorizzati come righe in una tabella chiamata FOO . Gli oggetti Bar vengono memorizzati come righe in una tabella chiamata BAR .

Si noti che non vi è alcuna mappatura degli oggetti Bar indietro agli oggetti Foo . Bar oggetti della Bar possono essere manipolati liberamente senza influenzare gli oggetti Foo .

inserisci la descrizione dell'immagine qui



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow