#30 jpa basic: jpql - join

This commit is contained in:
haerong22
2023-02-04 21:41:40 +09:00
parent c4650ba936
commit 75749c6711
3 changed files with 100 additions and 1 deletions

View 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();
}
}

View File

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

View File

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