
JPA - Relaciones de la Entidad
Este captulo le lleva a travs de las relaciones entre las entidades. Generalmente las relaciones son ms efectivas entre las tablas en la base de datos. Aqu las clases de entidad son tratadas como tablas relacionales (concepto de JPA), por lo tanto, las relaciones entre las clases de entidad son los siguientes:
- @ManyToOne Relation
- @OneToMany Relation
- @OneToOne Relation
- @ManyToMany Relation
@ManyToOne Relation
Existe relacin Many-To-One entre las entidades donde se hace referencia a una entidad (columna o conjunto de columnas) con valores nicos que contienen de otra entidad (columna o conjunto de columnas). En bases de datos relacionales, estas relaciones se aplican mediante el uso de clave primaria clave externa entre las tablas.
Nos permite considerar un ejemplo de una relacin entre entidades empleado y departamento. De manera unidireccional, es decir, de empleado al Departamento, Many-To-One relacin es aplicable. Eso significa que cada registro de empleado contiene un id de departamento, que debe ser una clave principal en la tabla Department. Aqu en la tabla Employee, Departamento id es la clave fornea.
El siguiente diagrama muestra el Many-To-One relacin entre las dos tablas.

Crear un proyecto JPA en eclipse que IDE llamado JPA_Eclipselink_MTO. Todos los mdulos de este proyecto se discuten ms abajo.
Creacin de Entidades
Siga el anterior dado diagrama para la creacin de entidades. Crear un paquete denominado com.tutorialspoin.eclipselink.entity bajo src paquete. Crear una clase denominada Department.java bajo dado paquete. La clase entidad departamento se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Department { @Id @GeneratedValue( strategy=GenerationType.AUTO ) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName( ) { return name; } public void setName( String deptName ) { this.name = deptName; } }
Crear la segunda entidad en esta relacin - clase de entidad empleado llamado Employee.java bajo com.tutorialspoint.eclipselink.entity paquete. La clase de entidad empleado se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Employee { @Id @GeneratedValue( strategy= GenerationType.AUTO ) private int eid; private String ename; private double salary; private String deg; @ManyToOne private Department department; public Employee(int eid, String ename, double salary, String deg) { super( ); this.eid = eid; this.ename = ename; this.salary = salary; this.deg = deg; } public Employee( ) { super(); } public int getEid( ) { return eid; } public void setEid(int eid) { this.eid = eid; } public String getEname( ) { return ename; } public void setEname(String ename) { this.ename = ename; } public double getSalary( ) { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDeg( ) { return deg; } public void setDeg(String deg) { this.deg = deg; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } }
Persistence.xml
Persistence.xml archivo es necesario para configurar la base de datos y el registro de las clases de entidad.
Persitence.xml ser creado por el eclipse IDE durante la creacin de un proyecto de JPA. Los detalles de configuracin son las especificaciones del usuario. El archivo persistence.xml se muestra como sigue:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL"> <class>com.tutorialspoint.eclipselink.entity.Employee</class> <class>com.tutorialspoint.eclipselink.entity.Department</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.logging.level" value="FINE"/> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>
Clases de servicio
Este mdulo contiene las clases de servicio, que implementa la parte relacional con la inicializacin de atributo. Crear un paquete bajo src paquete denominado com.tutorialspoint.eclipselink.service. La clase DAO ManyToOne.java se crea bajo dado paquete. La clase DAO se muestra como sigue:
package com.tutorialspointeclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Department; import com.tutorialspoint.eclipselink.entity.Employee; public class ManyToOne { public static void main( String[ ] args ) { EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory.createEntityManager( ); entitymanager.getTransaction( ).begin( ); //Create Department Entity Department department = new Department(); department.setName("Development"); //Store Department entitymanager.persist(department); //Create Employee1 Entity Employee employee1 = new Employee(); employee1.setEname("Satish"); employee1.setSalary(45000.0); employee1.setDeg("Technical Writer"); employee1.setDepartment(department); //Create Employee2 Entity Employee employee2 = new Employee(); employee2.setEname("Krishna"); employee2.setSalary(45000.0); employee2.setDeg("Technical Writer"); employee2.setDepartment(department); //Create Employee3 Entity Employee employee3 = new Employee(); employee3.setEname("Masthanvali"); employee3.setSalary(50000.0); employee3.setDeg("Technical Writer"); employee3.setDepartment(department); //Store Employees entitymanager.persist(employee1); entitymanager.persist(employee2); entitymanager.persist(employee3); entitymanager.getTransaction().commit(); entitymanager.close(); emfactory.close(); } }
Despus de compilar y ejecutar el programa anterior, usted recibir notificaciones en el panel de la consola de Eclipse IDE. Para la salida, verifique MySQL workbench. En este ejemplo, se crean dos tablas.
Pasar la siguiente consulta en interfaz MySQL y el resultado de Departamento mesa se mostrar como sigue:
Select * from department
ID | Nombre |
---|---|
101 | Desarrollo |
Pase a la siguiente consulta en interfaz MySQL y se visualizar el resultado de la tabla Empleado de la siguiente manera.
Select * from employee
Eid | Deg | Ename | Salary | Department_Id |
---|---|---|---|---|
102 | Technical Writer | Satish | 45000 | 101 |
103 | Technical Writer | Krishna | 45000 | 101 |
104 | Technical Writer | Masthanwali | 50000 | 101 |
En la tabla anterior Department_Id es la clave fornea (campo de referencia) de la tabla Department.
@OneToMany Relacin
En esta relacin, cada fila de una entidad se hace referencia a los muchos registros secundarios en otra entidad. Lo importante es que los registros secundarios no pueden tener varios padres. En una relacin uno a varios entre la tabla A y B de la tabla, cada fila en la tabla A puede ser vinculado a una o varias filas en la tabla B.
Consideremos el ejemplo de arriba. Supongamos que empleado y mesas del Departamento en el ejemplo anterior se conectan de manera unidireccional inversa, entonces la relacin se convierte en uno de varios relacin. Crear un proyecto JPA en eclipse IDE llamado JPA_Eclipselink_OTM. Todos los mdulos de este proyecto se discuten ms abajo.
Creacin de Entidades
Siga el anterior dado diagrama para la creacin de entidades. Crear un paquete denominado com.tutorialspoin.eclipselink.entity bajo src paquete. Crear una clase denominada Department.java bajo dado paquete. La clase entidad departamento se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import java.util.List; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Department { @Id @GeneratedValue( strategy=GenerationType.AUTO ) private int id; private String name; @OneToMany( targetEntity=Employee.class ) private List employeelist; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName( ) { return name; } public void setName( String deptName ) { this.name = deptName; } public List getEmployeelist() { return employeelist; } public void setEmployeelist(List employeelist) { this.employeelist = employeelist; } }
Crear la segunda entidad en esta relacin-clase de entidad empleado, denominada Employee.java bajo com.tutorialspoint.eclipselink.entity paquete. La clase de entidad empleado se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Employee { @Id @GeneratedValue( strategy= GenerationType.AUTO ) private int eid; private String ename; private double salary; private String deg; public Employee(int eid, String ename, double salary, String deg) { super( ); this.eid = eid; this.ename = ename; this.salary = salary; this.deg = deg; } public Employee( ) { super(); } public int getEid( ) { return eid; } public void setEid(int eid) { this.eid = eid; } public String getEname( ) { return ename; } public void setEname(String ename) { this.ename = ename; } public double getSalary( ) { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDeg( ) { return deg; } public void setDeg(String deg) { this.deg = deg; } }
Persistence.xml
The persistence.xml archivo es la siguiente:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL"> <class>com.tutorialspoint.eclipselink.entity.Employee</class> <class>com.tutorialspoint.eclipselink.entity.Department</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.logging.level" value="FINE"/> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>
Clases de servicio
Este mdulo contiene las clases de servicio, que implementa la parte relacional con la inicializacin de atributo. Crear un paquete bajo src paquete denominado com.tutorialspoint.eclipselink.service. La clase DAO llamada OneToMany.java se crea bajo dado paquete. La clase DAO se muestra como sigue:
package com.tutorialspointeclipselink.service; import java.util.List; import java.util.ArrayList; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Department; import com.tutorialspoint.eclipselink.entity.Employee; public class OneToMany { public static void main(String[] args) { EntityManagerFactory emfactory = Persistence. createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory.createEntityManager( ); entitymanager.getTransaction( ).begin( ); //Create Employee1 Entity Employee employee1 = new Employee(); employee1.setEname("Satish"); employee1.setSalary(45000.0); employee1.setDeg("Technical Writer"); //Create Employee2 Entity Employee employee2 = new Employee(); employee2.setEname("Krishna"); employee2.setSalary(45000.0); employee2.setDeg("Technical Writer"); //Create Employee3 Entity Employee employee3 = new Employee(); employee3.setEname("Masthanvali"); employee3.setSalary(50000.0); employee3.setDeg("Technical Writer"); //Store Employee entitymanager.persist(employee1); entitymanager.persist(employee2); entitymanager.persist(employee3); //Create Employeelist List<Employee> emplist = new ArrayList(); emplist.add(employee1); emplist.add(employee2); emplist.add(employee3); //Create Department Entity Department department = new Department(); department.setName("Development"); department.setEmployeelist(emplist); //Store Department entitymanager.persist(department); entitymanager.getTransaction().commit(); entitymanager.close(); emfactory.close(); } }
Despus de la compilacin y ejecucin del programa anterior usted recibir notificaciones en el panel de la consola de Eclipse IDE. Para la salida de comprobar MySQL workbench de la siguiente manera.
En este proyecto se crean las tres tablas. Pase la siguiente consulta en interfaz MySQL y el resultado de la tabla department_employee se mostrar como sigue:
Select * from department_Id;
Department_ID | Employee_Eid |
---|---|
254 | 251 |
254 | 252 |
254 | 253 |
En la tabla anterior, department_id y employee_id son las claves externas (campos de referencia) de departamento y empleado tablas.
Pase la siguiente consulta en interfaz MySQL y el resultado de la tabla department se mostrar en un formato tabular de la siguiente manera.
Select * from department;
ID | Nombre |
---|---|
254 | Desarrollo |
Pase a la siguiente consulta en interfaz MySQL y se visualizar el resultado de la tabla employee de la siguiente manera:
Select * from employee;
Eid | Deg | Ename | Salary |
---|---|---|---|
251 | Technical Writer | Satish | 45000 |
252 | Technical Writer | Krishna | 45000 |
253 | Technical Writer | Masthanwali | 50000 |
@OneToOne Relation
En una relacin uno-a-uno, un elemento puede vincularse al nico otro elemento. Significa que cada fila de una entidad se refiere a una y slo una fila de otra entidad.
Nos permite considerar el ejemplo anterior. Empleado y Departamento de manera unidireccional inversa, la relacin es relacin uno-a-uno. Significa que cada empleado pertenece al Departamento de sola. Crear un proyecto JPA en eclipse IDE llamado JPA_Eclipselink_OTO. Todos los mdulos de este proyecto se examinan a continuacin.
Creacin de entidades
Siga el anterior dado diagrama para la creacin de entidades. Crear un paquete denominado com.tutorialspoin.eclipselink.entity bajo src paquete. Crear una clase denominada Department.java bajo dado el paquete. La clase entidad departamento se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Department { @Id @GeneratedValue( strategy=GenerationType.AUTO ) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName( ) { return name; } public void setName( String deptName ) { this.name = deptName; } }
Crear la segunda entidad en esta relacin-clase de entidad Employee, denominada Employee.java en paquete 'com.tutorialspoint.eclipselink.entity'. La clase de entidad empleado se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToOne; @Entity public class Employee { @Id @GeneratedValue( strategy= GenerationType.AUTO ) private int eid; private String ename; private double salary; private String deg; @OneToOne private Department department; public Employee(int eid, String ename, double salary, String deg) { super( ); this.eid = eid; this.ename = ename; this.salary = salary; this.deg = deg; } public Employee( ) { super(); } public int getEid( ) { return eid; } public void setEid(int eid) { this.eid = eid; } public String getEname( ) { return ename; } public void setEname(String ename) { this.ename = ename; } public double getSalary( ) { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDeg( ) { return deg; } public void setDeg(String deg) { this.deg = deg; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } }
Persistence.xml
Persistence.xml archivo de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL"> <class>com.tutorialspoint.eclipselink.entity.Employee</class> <class>com.tutorialspoint.eclipselink.entity.Department</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.logging.level" value="FINE"/> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>
Clases de servicio
Crear un paquete debajo del paquete 'src' llamado 'com.tutorialspoint.eclipselink.service'. La clase DAO llamada OneToOne.java se crea bajo el paquete determinado. La clase DAO se muestra como sigue:
package com.tutorialspointeclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Department; import com.tutorialspoint.eclipselink.entity.Employee; public class OneToOne { public static void main(String[] args) { EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory.createEntityManager( ); entitymanager.getTransaction( ).begin( ); //Create Department Entity Department department = new Department(); department.setName("Development"); //Store Department entitymanager.persist(department); //Create Employee Entity Employee employee = new Employee(); employee.setEname("Satish"); employee.setSalary(45000.0); employee.setDeg("Technical Writer"); employee.setDepartment(department); //Store Employee entitymanager.persist(employee); entitymanager.getTransaction().commit(); entitymanager.close(); emfactory.close(); } }
Despus de la compilacin y ejecucin del programa anterior usted recibir notificaciones en el panel de la consola de Eclipse IDE. Para la salida, compruebe los siguientes MySQL workbench.
En el ejemplo anterior, se crean dos tablas. Pase la siguiente consulta en interfaz MySQL y se visualizar el resultado de la tabla department de la siguiente manera:
Select * from department
ID | nombre |
---|---|
301 | desarrollo |
Pase la siguiente consulta en interfaz MySQL y se visualizar el resultado de la tabla empleado de la siguiente manera:
Select * from employee
Eid | Deg | Ename | Salary | Department_id |
---|---|---|---|---|
302 | Technical Writer | Satish | 45000 | 301 |
@ManyToMany Relation
Relacin de varios a varios es donde una o ms filas de una entidad se asocian a ms de una fila en otra entidad.
Vamos a considerar un ejemplo de una relacin entre dos entidades: clase y profesor. De manera bidireccional, tanto clase como profesor tienen muchos a uno relacin. Que significa que cada registro de clase es referido por el profesor (ids de profesor), que debe ser primaria llaves en la mesa del profesor y almacenados en la tabla Teacher_Class y viceversa. Aqu, la tabla Teachers_Class contiene los campos claves extranjeros. Crear un proyecto JPA en eclipse IDE llamado JPA_Eclipselink_MTM. Todos los mdulos de este proyecto se examinan a continuacin.

Creacin de entidades
Crear entidades siguiendo el esquema que se muestra en el diagrama de arriba. Crear un paquete denominado 'com.tutorialspoin.eclipselink.entity' bajo 'src' paquete. Crear una clase denominada Clas.java bajo dado el paquete. La clase entidad departamento se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToMany; @Entity public class Clas { @Id @GeneratedValue( strategy = GenerationType.AUTO ) private int cid; private String cname; @ManyToMany(targetEntity=Teacher.class) private Set teacherSet; public Clas() { super(); } public Clas(int cid, String cname, Set teacherSet) { super(); this.cid = cid; this.cname = cname; this.teacherSet = teacherSet; } public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public Set getTeacherSet() { return teacherSet; } public void setTeacherSet(Set teacherSet) { this.teacherSet = teacherSet; } }
Crear la segunda entidad en esta relacin-clase de entidad Employee, denominada Teacher.java en paquete 'com.tutorialspoint.eclipselink.entity'. La clase de entidad empleado se muestra como sigue:
package com.tutorialspoint.eclipselink.entity; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToMany; @Entity public class Teacher { @Id @GeneratedValue( strategy = GenerationType.AUTO ) private int tid; private String tname; private String subject; @ManyToMany(targetEntity=Clas.class) private Set clasSet; public Teacher() { super(); } public Teacher(int tid, String tname, String subject, Set clasSet) { super(); this.tid = tid; this.tname = tname; this.subject = subject; this.clasSet = clasSet; } public int getTid() { return tid; } public void setTid(int tid) { this.tid = tid; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public Set getClasSet() { return clasSet; } public void setClasSet(Set clasSet) { this.clasSet = clasSet; } }
Persistence.xml
Persistence.xml archivo de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL"> <class>com.tutorialspoint.eclipselink.entity.Employee</class> <class>com.tutorialspoint.eclipselink.entity.Department</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.logging.level" value="FINE"/> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>
Clases de servicio
Crear un paquete debajo del paquete 'src' llamado 'com.tutorialspoint.eclipselink.service'. La clase DAO llamada ManyToMany.java se crea bajo dado paquete. La clase DAO se muestra como sigue:
package com.tutorialspoint.eclipselink.service; import java.util.HashSet; import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Clas; import com.tutorialspoint.eclipselink.entity.Teacher; public class ManyToMany { public static void main(String[] args) { EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory.createEntityManager( ); entitymanager.getTransaction( ).begin( ); //Create Clas Entity Clas clas1=new Clas(0,"1st",null); Clas clas2=new Clas(0,"2nd",null); Clas clas3=new Clas(0,"3rd",null); //Store Clas entitymanager.persist(clas1); entitymanager.persist(clas2); entitymanager.persist(clas3); //Create Clas Set1 Set<Clas> classSet1 = new HashSet(); classSet1.add(clas1); classSet1.add(clas2); classSet1.add(clas3); //Create Clas Set2 Set<Clas> classSet2 = new HashSet(); classSet2.add(clas3); classSet2.add(clas1); classSet2.add(clas2); //Create Clas Set3 Set<Clas> classSet3 = new HashSet(); classSet3.add(clas2); classSet3.add(clas3); classSet3.add(clas1); //Create Teacher Entity Teacher teacher1 = new Teacher(0, "Satish", "Java", classSet1); Teacher teacher2 = new Teacher(0, "Krishna", "Adv Java", classSet2); Teacher teacher3 = new Teacher(0, "Masthanvali", "DB2", classSet3); //Store Teacher entitymanager.persist(teacher1); entitymanager.persist(teacher2); entitymanager.persist(teacher3); entitymanager.getTransaction( ).commit( ); entitymanager.close( ); emfactory.close( ); } }
En este proyecto de ejemplo, se crean las tres tablas. Pase la siguiente consulta en interfaz MySQL y el resultado de la tabla teacher_clas se mostrar como sigue:
Select * form teacher_clas
Teacher_tid | Classet_cid |
---|---|
354 | 351 |
355 | 351 |
356 | 351 |
354 | 352 |
355 | 352 |
356 | 352 |
354 | 353 |
355 | 353 |
356 | 353 |
En la tabla anterior teacher_tid es la clave externa de la tabla maestra, y classet_cid es la clave externa de la tabla de la clase. Por lo tanto diferentes maestros se asignan a diferentes clase
Pase la siguiente consulta en interfaz MySQL y el resultado de la mesa del profesor se mostrar como sigue:
Select * from teacher
Tid | Subject | Tname |
---|---|---|
354 | Java | Satish |
355 | Adv Java | Krishna |
356 | DB2 | Masthanvali |
Pase la siguiente consulta en interfaz MySQL y el resultado de la clase tabla aparecer de la siguiente manera:
Select * from clas
Cid | Cname |
---|---|
351 | 1st |
352 | 2nd |
353 | 3rd |