jpa
Cartographie individuelle
Recherche…
Paramètres
| Annotation | Objectif |
|---|---|
| @TableGenerator | Spécifie le nom du générateur et le nom de la table où le générateur peut être trouvé |
| @GeneratedValue | Spécifie la stratégie de génération et fait référence au nom du générateur |
| @Un par un | Spécifie une relation individuelle entre l'employé et le bureau, ici l'employé est le propriétaire de la relation |
| mappéPar | Cet élément est fourni au verso de la relation. Cela permet une relation bidirectionnelle |
One To One relation entre employé et bureau
Considérez une relation bidirectionnelle entre l’employé et le bureau.
Employee.java
@Entity
public class Employee {
@TableGenerator(name = "employee_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 100)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "employee_gen")
private int idemployee;
private String firstname;
private String lastname;
private String email;
@OneToOne
@JoinColumn(name = "iddesk")
private Desk desk;
// getters and setters
}
Desk.java
@Entity
public class Desk {
@TableGenerator(table = "id_gen", name = "desk_gen", pkColumnName = "gen_name", valueColumnName = "gen_value", allocationSize = 1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "desk_gen")
private int iddesk;
private int number;
private String location;
@OneToOne(mappedBy = "desk")
private Employee employee;
// getters and setters
}
Code de test
/* Create EntityManagerFactory */
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("JPAExamples");
/* Create EntityManager */
EntityManager em = emf.createEntityManager();
Employee employee;
employee = new Employee();
employee.setFirstname("pranil");
employee.setLastname("gilda");
employee.setEmail("sdfsdf");
Desk desk = em.find(Desk.class, 1); // retrieves desk from database
employee.setDesk(desk);
em.persist(employee);
desk = em.find(Desk.class, 1); // retrieves desk from database
desk.setEmployee(employee);
System.out.println(desk.getEmployee());
Le schéma de base de données est représenté ci-dessous.
- L'annotation @JoinColumn passe au mappage de l'entité mappée sur la table contenant la jointure colulmn.Le propriétaire de la relation. Dans notre cas, la table Employee a la colonne join pour que @JoinColumn soit sur le champ Desk de l'entité Employee.
- L'élément mappedBy doit être spécifié dans l'association @OneToOne dans l'entité à l'envers de la relation. C'est-à-dire l'entité qui ne fournit pas de colonne de jointure dans l'aspect base de données. Dans notre cas, Desk est l'entité inverse.
Un exemple complet peut être trouvé ici
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow