#30 jpa basic: jpql - join
This commit is contained in:
78
hello-jpa/src/main/java/com/hello/jpa/query/Join.java
Normal file
78
hello-jpa/src/main/java/com/hello/jpa/query/Join.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.hello.jpa.query;
|
||||
|
||||
import com.hello.jpa.query.entity.Member;
|
||||
import com.hello.jpa.query.entity.Team;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.EntityTransaction;
|
||||
import javax.persistence.Persistence;
|
||||
import java.util.List;
|
||||
|
||||
public class Join {
|
||||
|
||||
public static void main(String[] args) {
|
||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
|
||||
|
||||
EntityManager em = emf.createEntityManager();
|
||||
|
||||
EntityTransaction tx = em.getTransaction();
|
||||
tx.begin();
|
||||
|
||||
try {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Team team = new Team();
|
||||
team.setName("team" + i);
|
||||
em.persist(team);
|
||||
|
||||
Member member = new Member();
|
||||
member.setName("member" + i);
|
||||
member.setAge(i);
|
||||
member.setTeam(team);
|
||||
|
||||
em.persist(member);
|
||||
}
|
||||
|
||||
em.flush();
|
||||
em.clear();
|
||||
|
||||
List<Member> result = em.createQuery(
|
||||
"select m from Member m inner join m.team t",
|
||||
Member.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
List<Member> result2 = em.createQuery(
|
||||
"select m from Member m left outer join m.team t",
|
||||
Member.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
List<Member> result3 = em.createQuery(
|
||||
"select m from Member m, Team t",
|
||||
Member.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
List<Member> result4 = em.createQuery(
|
||||
"select m from Member m left join m.team t on t.name='team2'",
|
||||
Member.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
List<Member> result5 = em.createQuery(
|
||||
"select m from Member m left join Team t on m.name = t.name",
|
||||
Member.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
tx.commit();
|
||||
} catch (Exception e) {
|
||||
tx.rollback();
|
||||
} finally {
|
||||
em.close();
|
||||
}
|
||||
|
||||
emf.close();
|
||||
}
|
||||
}
|
||||
@@ -11,10 +11,23 @@ public class Member {
|
||||
private String name;
|
||||
private int age;
|
||||
|
||||
@ManyToOne
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "team_id")
|
||||
private Team team;
|
||||
|
||||
public void changeTeam(Team team) {
|
||||
this.team = team;
|
||||
team.getMembers().add(this);
|
||||
}
|
||||
|
||||
public Team getTeam() {
|
||||
return team;
|
||||
}
|
||||
|
||||
public void setTeam(Team team) {
|
||||
this.team = team;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,14 @@ public class Team {
|
||||
@OneToMany(mappedBy = "team")
|
||||
private List<Member> members = new ArrayList<>();
|
||||
|
||||
public List<Member> getMembers() {
|
||||
return members;
|
||||
}
|
||||
|
||||
public void setMembers(List<Member> members) {
|
||||
this.members = members;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user