Recherche…


Paramètres

Annotation Détails
@OneToOne Spécifie une relation un à un avec un objet correspondant.
@OneToMany Spécifie un objet unique mappé sur de nombreux objets.
@ManyToOne Spécifie une collection d'objets mappés sur un objet unique.
@Entity Spécifie un objet mappé à une table de base de données.
@Table Spécifie la table de base de données mappée par cet objet.
@JoinColumn Spécifie la colonne dans laquelle une clé cédée est stockée.
@JoinTable Spécifie une table intermédiaire qui stocke les clés étrangères.

Bi-directionnel plusieurs à plusieurs en utilisant l'objet table de jointure géré par l'utilisateur

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

Spécifie une relation bidirectionnelle entre de nombreux objets Foo et de nombreux objets Bar aide d'une table de jointure intermédiaire gérée par l'utilisateur.

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR . Les relations entre les objets Foo et Bar sont stockées dans une table appelée FOO_BAR . Il y a un objet FooBar dans l'application.

Généralement utilisé lorsque vous souhaitez stocker des informations supplémentaires sur l'objet de jointure, telles que la date de création de la relation.

entrer la description de l'image ici

Bi-directionnel plusieurs à plusieurs utilisant la table de jointure gérée par 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;
}

Spécifie une relation entre de nombreux objets Foo et de nombreux objets Bar aide d'une table de jointure intermédiaire gérée par Hibernate.

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR . Les relations entre les objets Foo et Bar sont stockées dans une table appelée FOO_BAR . Cependant, cela implique qu'il n'y a pas d'objet FooBar dans l'application.

entrer la description de l'image ici

Relation bidirectionnelle un vers plusieurs utilisant le mappage de clé étrangère

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

Spécifie une relation bidirectionnelle entre un objet Foo et plusieurs objets Bar aide d'une clé étrangère.

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR . La clé étrangère est stockée dans la table BAR dans une colonne appelée fooId .

entrer la description de l'image ici

Une à une relation bi-directionnelle gérée par 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;
}

Spécifie une relation bidirectionnelle entre un objet Foo et un objet Bar aide d'une clé étrangère.

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR . La clé étrangère est stockée dans la table FOO dans une colonne appelée barId .

Notez que la valeur mappedBy est le nom du champ sur l'objet, pas le nom de la colonne.

entrer la description de l'image ici

Relation unidirectionnelle un-à-plusieurs utilisant la table de jointure gérée par l'utilisateur

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

Spécifie une relation unidirectionnelle entre un objet Foo et plusieurs objets Bar aide d'une table de jointure intermédiaire gérée par l'utilisateur.

Cela est similaire à une relation ManyToMany , mais si vous ajoutez une contrainte unique à la clé étrangère cible, vous pouvez imposer qu'il s'agit de OneToMany .

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR . Les relations entre les objets Foo et Bar sont stockées dans une table appelée FOO_BAR . Il y a un objet FooBar dans l'application.

Notez qu'il n'y a pas de correspondance entre les objets Bar objets Foo . Bar objets de Bar peuvent être manipulés librement sans affecter les objets de Foo .

Très couramment utilisé avec la sécurité Spring lors de la configuration d'un objet User qui possède une liste de Role qu'il peut effectuer. Vous pouvez ajouter et supprimer des rôles à un utilisateur sans avoir à vous soucier de cascades supprimer le Role de.

entrer la description de l'image ici

Relation unidirectionnelle un à un

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

Spécifie une relation unidirectionnelle entre un objet Foo et un objet Bar .

Les objets Foo sont stockés sous forme de lignes dans une table appelée FOO . Les objets Bar sont stockés sous forme de lignes dans une table appelée BAR .

Notez qu'il n'y a pas de correspondance entre les objets Bar objets Foo . Bar objets de Bar peuvent être manipulés librement sans affecter les objets de Foo .

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow