해결된 질문
작성
·
227
0
안녕하세요. 영속성 컨텍스트와 관련해서 질문드립니다.
위 테스트를 실행하면 name이 마지막에 변경된 lee로 insert 쿼리가 날라갈것이라고 예상했으나 변경 전 값인 park로 insert 되었습니다.
제가 생각하는 insert 과정은 아래와 같은데 혹시 어떤게 잘못되었는지 알 수 있을까요..?
엔티티매니저의 persist로 영속성 컨텍스트에 멤버 엔티티 올림 -> 멤버 엔티티의 이름을 lee로 변경 -> 트랜잭션 커밋 -> 영속성 컨텍스트 flush -> 멤버객체(name 이 lee 인 상태)가 insert 됨.
추가로 변경감지도 되지 않는것 같아서 질문드립니다.
member1을 insert 하고 영속성 컨텍스트를 clear 한 뒤, 다시 select 해서 name을 변경했는데 update 쿼리가 날라가지 않네요..
jpql로 update 쿼리 짜서 하면 update 쿼리가 날라긴 합니다.. 변경감지는 왜 안되는 걸까요..?
답변 2
2
안녕하세요. 최영원님
다음 코드에서 제가 주석 처리한 부분이 있는데요. 이 부분을 확인해주세요.
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "t_member_seq")
@Column(name = "member_no", nullable = false, updatable = false)
private Long memberNo;
@Column(name = "name", /*nullable = false, updatable = false,*/ length = 10)
private String name;
}
감사합니다.
이상하네요.
혹시 쿼리랑 쿼리에 바인딩 되는 파라미터 로그 캡쳐해주실 수 있을까요?
그리고 아래 링크 참고하셔서 프로젝트를 구글드라이브로 공유 부탁드립니다.
프로젝트 공유 : https://drive.google.com/file/d/14qtQhY7R7Jmktrq4-eYImKZ_1RwHyw_e/view?usp=sharing
첫번째 테스트 실행 로그 입니다.
두번재 테스트 실행 로그 입니다.
엔티티 쪽을 확인을 못해봤었네요...감사합니다!