값 타입 컬렉션 대안
189
작성한 질문수 16




update도 보면 create one-to-many row 업데이트가
나오지 않으며 id도 1씩 추가가 되지 않습니다. 왜 이런건지 이해가 안되네요 38:37초 입니다.
답변 2
0
안녕하세요. 형종님
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)
링크: 공식 서포터즈
링크: 자주하는 질문
감사합니다.
0
https://drive.google.com/file/d/1tjsu0t3huv-8p0RzDV7d5CkCqyB7w0PW/view?usp=sharing
insert favoriteFoods와 AddressEntity만 될뿐
AddressHistory는 Create밑 Update가 되지 않습니다. 그냥 자체적으로 실행조차 뜨지 않네요

0
안녕하세요. 형종님
올려주신 코드를 확인해보았는데요.
하이버네이트가 버전이 올라가면서 남기는 로그가 약간 변경된 것 같아요.
create one-to-many row라는 메시지는 나오지 않지만, 다음 로그를 통해서 ADDRESS가 update 되는 것을 확인할 수 있습니다.
Hibernate:
/* insert for
hellojpa.AddressEntity */insert
into
ADDRESS (city, street, zipcode, id)
values
(?, ?, ?, ?)
Hibernate:
/* insert for
hellojpa.AddressEntity */insert
into
ADDRESS (city, street, zipcode, id)
values
(?, ?, ?, ?)
Hibernate:
update
ADDRESS
set
MEMBER_ID=?
where
id=?
Hibernate:
update
ADDRESS
set
MEMBER_ID=?
where
id=?
추가로 AddressEntity의 저장 테이블인(@Table로 매핑한) ADDRESS 테이블에도 데이터가 정상 저장된 것을 데이터베이스를 통해서 확인할 수 있었습니다.
하이버네이트 버전에 따라서 로그가 조금씩 변경되기는 하는데요. 이럴 때는 데이터베이스에 보관된 데이터를 확인해보시면 더 확실히 알 수 있습니다 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 형종님.
값 타입 컬렉션의 대안으로 일대다 관계를 설정한 경우, 연관된 몇 가지 질문에 대해 답변드리겠습니다:
1. 왜 update 쿼리가 나가는가?
일대다 관계를 설정할 때, 부모 엔티티가 연관된 자식 엔티티 리스트를 가지고 있습니다. 이 관계에서, 자식 엔티티는 외래 키(member_id)를 통해 부모 엔티티와 연결됩니다.
id가 없는 이유:
- 일대다 관계에서는 자식 엔티티(
AddressEntity)의 외래 키(member_id)는 값이 처음에는 null로 설정되며, 부모 상태가 저장되거나 갱신될 때 나중에 설정됩니다.
- 일대다 관계에서는 자식 엔티티(
연관된 update 쿼리:
- 처음에 자식 테이블에 데이터를 삽입할 때, 외래 키
member_id값이 없기 때문에insert쿼리가 먼저 실행됩니다.
- 그 후에, 부모 엔티티와 자식 엔티티를 연결하기 위해 외래 키를 업데이트하는
update쿼리가 실행되는 것입니다.
- 처음에 자식 테이블에 데이터를 삽입할 때, 외래 키
관련 질문과 답변
추가 리소스
질문 요약 및 답변
왜 insert될 때 memberid값이 없는거죠? 일대다는 단방향은 일대 FK가 있어서 다엔 member_id가 없는건가요?
- 네, 처음에는 다쪽의 외래 키가 설정되지 않아 insert될 때는 기본적으로 null로 저장됩니다. 이후 프로세스에서 FK 값이 업데이트 됩니다.
- 네, 처음에는 다쪽의 외래 키가 설정되지 않아 insert될 때는 기본적으로 null로 저장됩니다. 이후 프로세스에서 FK 값이 업데이트 됩니다.
addressentity table엔 member_id 컬럼이 없는데 뭘 업데이트 하는거죠?
AddressEntity테이블에member_id컬럼이 존재해야 합니다. 이 컬럼을 통해 부모-자식 간 FK 관계가 설정됩니다. FK 설정이 빠져 있어서 발생하는 문제일 수 있습니다. 이 부분을 코드나 데이터베이스 구조와 같이 점검해 보셔야 할 것 같습니다.
저는 질문자님의 이해를 돕고자 기존 질문에 대한 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
33
2
inheritance startegy 선택시 고려사항
0
24
1
Entity 동등성 비교
0
25
1
실무 조언 관련 질문입니다.
0
48
1
H2데이터베이스 파일 생성
0
60
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
57
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
58
1
JPQL 메소드와 락
0
56
1
Delivery @OneToOne
0
62
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
98
2
UnsupportedOperationException 발생
0
89
3
H2 Database 연결이 안됩니다.
0
98
2
연관관계 매핑 질문드립니다.
0
88
2
h2데이터베이스 실행오류
0
110
2
persistence.xml
0
112
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
83
1
영속성 컨텍스트
0
70
1
JPA 프록시
0
100
1
Native Query와 MyBatis
0
74
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
93
1
임베디드 타입 예시 코드 관련 질문
0
121
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
97
3
인텔리제이 패키지 커서 단축키 질문
0
109
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
149
1





