One To Many List Collection : One To Many Mapping«JPA«Java Tutorial
- Java Tutorial
- JPA
- One To Many Mapping
File: Student.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Student {
@Id @GeneratedValue[strategy=GenerationType.IDENTITY]
private int id;
private String name;
@ManyToOne
private Department department;
public int getId[] {
return id;
}
public void setId[
int id] {
this.id = id;
}
public String getName[] {
return name;
}
public void setName[String name] {
this.name = name;
}
public Department getDepartment[] {
return department;
}
public void setDepartment[Department department] {
this.department = department;
}
public String toString[] {
return "Student id: " + getId[] + " name: " + getName[] +
" with " + getDepartment[];
}
}
File: Department.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
@Entity
public class Department {
@Id @GeneratedValue[strategy=GenerationType.IDENTITY]
private int id;
private String name;
@OneToMany[mappedBy="department"]
@OrderBy["name ASC"]
private List students;
public Department[] {
students =
new ArrayList[];
}
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 void addStudent[Student student] {
if [!getStudents[].contains[student]] {
getStudents[].add[student];
if [student.getDepartment[] != null] {
student.getDepartment[].getStudents[].remove[student];
}
student.setDepartment[
this];
}
}
public Collection getStudents[] {
return students;
}
public String toString[] {
return "Department id: " + getId[] +
", name: " + getName[];
}
}
File: Helper.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Helper {
public static void checkData[]
throws Exception {
Class.forName["org.hsqldb.jdbcDriver"];
Connection conn = DriverManager.getConnection["jdbc:hsqldb:data/tutorial", "sa", ""];
Statement st = conn.createStatement[];
ResultSet mrs = conn.getMetaData[].getTables[null, null, null,
new String[] { "TABLE" }];
while [mrs.next[]] {
String tableName = mrs.getString[3];
System.out.println["\n\n\n\nTable Name: "+ tableName];
ResultSet rs = st.executeQuery["select * from " + tableName];
ResultSetMetaData metadata = rs.getMetaData[];
while [rs.next[]] {
System.out.println[" Row:"];
for [
int i = 0; i < metadata.getColumnCount[]; i++] {
System.out.println[" Column Name: "+ metadata.getColumnLabel[i + 1]+ ", "];
System.out.println[" Column Type: "+ metadata.getColumnTypeName[i + 1]+ ": "];
Object value = rs.getObject[i + 1];
System.out.println[" Column Value: "+value+"\n"];
}
}
}
}
}
File: Main.java
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class Main {
static EntityManagerFactory emf = Persistence.createEntityManagerFactory["JPAService"];
static EntityManager em = emf.createEntityManager[];
public static void main[String[] a]
throws Exception {
em.getTransaction[].begin[];
Student student =
new Student[];
student.setName["Joe"];
em.persist[student];
Department dept =
new Department[];
dept.addStudent[student];
em.persist[dept];
em.flush[];
Query query = em.createQuery["SELECT e FROM Student e"];
List list = [List] query.getResultList[];
System.out.println[list];
query = em.createQuery["SELECT d FROM Department d"];
List dList = [List] query.getResultList[];
System.out.println[dList];
em.getTransaction[].commit[];
em.close[];
emf.close[];
Helper.checkData[];
}
}
File: persistence.xml
Download:JPA-OneToManyListCollection.zip[ 5,290 k]
22.8.One To Many Mapping |
22.8.1. | Use Collection In One To Many Mapping | |
22.8.2. | Set target Entity For One To Many Mapping | |
22.8.3. | One To Many With Order By Setting | |
22.8.4. | One To Many With Mapped By To remove Mapping Table | |
22.8.5. | One To Many Map Collection | |
22.8.6. | One To Many List Collection | |
22.8.7. | One To Many Join Table Setup | |
22.8.8. | One To Many Cascade.All | |
22.8.9. | One To Many Bidirectional | |
Video liên quan