작성
·
174
0
@Entity
@Table(name = "Member")
//@SequenceGenerator(
// name = "member_seq_generator",
// sequenceName = "member_seq",
// initialValue = 1,
// allocationSize = 50)
@Getter @Setter
public class Member {
@Id
// @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "member_seq")
private Long id;
@Column(name = "USERNAME", nullable = false)
private String userName;
private Integer age;
// @Column(name = "TEAM_ID")
// private Long teamId;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
@Enumerated(EnumType.STRING)
private RoleType roleType;
}
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
// code 작성
try {
Team team = new Team();
//1. team.setId(1L);
team.setName("TeamA");
em.persist(team);
Member member = new Member();
//2. member.setId(3L);
member.setUserName("member1");
em.persist(member);
team.addMember(member);
em.flush();
em.clear();
Team findTeam = em.find(Team.class, team.getId());
List<Member> members = findTeam.getMembers();
for (Member m : members) {
System.out.println("m = " + m.getUserName());
}
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();
}
안녕하세요 강사님!
제가 테스트를 하던 도중에 궁금한데 도저히 답이 안나와서 질문드립니다. 시퀀스를 지우고 아이디에 값을 넣어 테스트를 해봤는데요. 1.의 team.setId(1L); 을 주석처리하고, 2. 를 풀고 실행했을 경우에는
이렇게 값이 들어가는데요
이와 반대로 1.의 주석을 풀고, 2.를 주석처리했을 경우에는
와 같이 아무런 값도 들어가지 않는데요.
어떤 이유 때문에 이렇게 되는지 알 수 있을까요?
답변 1
0
안녕하세요. ms-seo님
} catch (Exception e) {
e.printStackTrace(); //이 부분을 추가해주세요.
tx.rollback();
}
그러면 어떤 문제가 발생했는지 이해하실 수 있을거에요.
감사합니다.
감사합니다!