묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
BFS 코드 질문
안녕하세요 강사님 BFS를 이용해서 답안을 작성해보았는데요, 어딘가가 잘못된 것 같은데 잘 모르겠네요ㅜㅜ 제가 작성한 코드는 다음과 같습니다. N = int(input()) apt = [] for _ in range(N): tmp = [] for i in input(): tmp.append(int(i)) apt.append(tmp) res = [] q = deque() for r in range(N): for c in range(N): if apt[r][c] == 1: cnt = 1 q.append((r,c)) while q: x, y = q.popleft() # (x,y) 좌표 방문 apt[x][y] = 0 # 방문한 곳은 0으로 변환 for i, j in ((x+1,y), (x,y+1), (x-1,y), (x,y-1)): if i >= 0 and i <= N-1 and j >= 0 and j <= N-1: # 좌표값이 제약조건을 만족할 경우 if apt[i][j] == 1: # 문제 조건을 만족하는지 확인 cnt += 1 q.append((i,j)) res.append(cnt) print(len(res)) for i in sorted(res): print(i) 위와 같이 작성했고 1번 input으로 답을 확인해보면 단지 갯수는 4개, 각 단지의 아파트 수는 3, 5, 10, 28이 나옵니다. 그런데 답은 3, 5, 10, 22인걸 보니 마지막 단지만 어딘가 잘못 카운트 한 것 같네요. 다른 input들도 확인해보니 다 제일 큰 단지 값만 잘못 나옵니다. 어떤 부분이 잘못된걸까요?ㅜㅜ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
react-router-dom 문제....
자꾸 이와 같은 에러 가뜹니다. react-router-dom에 Switch와 Redirect을 export없다고 합니다....
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
print 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. print(f'원주율 = {3.141592}') 이런식의 print는 권장하지 않는 방법인가요?
-
미해결스프링 핵심 원리 - 고급편
@AfterReturning 에서 메서드 시그니처 파라미터의 result 타입이 다를 경우
안녕하세요, 강사님! 알기 쉽게 차근차근 빌드업 해주셔서.. 강의 커리큘럼에도 놀랍고...이해가 쏙쏙 되어 감사히 듣고있습니다. 한가지 질문이 있어서 남깁니다. 강의자료 23페이지 하단의 "returning 절에 지정된 타입의 값을 반환하는 메서드만 대상으로 실행된다" 부분을 테스트 해보았습니다. (다른 어드바이스는 제외하고 @AfterReturning 만으로 테스트) Orderservice의 save는 String을 리턴하게 하고 어드바이스의 returning 타입은 Integer로 선언하여 테스트를 해보았고, 어드바이스가 적용되지 않는 것을 확인하였습니다. @AfterReturning(value = "hello.aop.order.aop.Pointcuts.orderAndService()", returning = "result")public void doReturn(JoinPoint joinPoint, Integer result) { 그래서 OrderService에 적용되는 어드바이스가 하나도 없는데 프록시는 생성되었을까 하여 aopInfo() 테스트로 확인해보니 OrderService에 여전히 프록시가 적용된 것을 확인하였습니다. 이전 강의에서 말씀해주신 포인트컷의 2가지 역할 중 첫번째 역할이 "빈 대상 객체가 포인트컷들 중에 하나라도 해당되면 프록시를 생성한다" 와 연결지어 생각해 보았을때, 포인트컷에 만족되기 때문에(모든 리턴타입에 대해 허용) 어드바이스 메서드 시그니처와는 관계없이 프록시를 생성한 것으로 추측됩니다. 이런 경우에 실제로는 사용할 어드바이스가 없지만 프록시를 생성하는 비용이 발생되는데, 실무에서는 조금 더 효율적으로 사용하기 위해서 포인트컷에 리턴타입을 명시해주는 것이 좋을까요? 그런데 또 생각해보면... 이 어드바이스 하나만 놓고 보았을때는 프록시만 생성되고 실제로 사용되지 않을 것 같은데, Aspect가 여러개 적용되어 중간에 다른 Aspect의 @Around에서 리턴타입이 변경된 후 넘어오게 된다면 이 어드바이스가 적용되는 일이 생길수도 있을 것 같습니다. 이렇게 생각하니 생각보다 고려할게 굉장히 많게 느껴지네요... 잘못 사용하면 예상치 못한 일들도 발생할 수 있을 것 같습니다.^^;; 정해진 답은 없고 위와 같은 것들을 잘 고려해서 주어진 상황에 따라 설계하는 것이 답일까요?? 감사합니다!
-
미해결핵심만 쉽게, 모두의 SQL 데이터 분석
엑셀단축키 알려주세요
엑셀파일 단축키를 몰라서 못따라가고 있어요 ㅠ 8:19초에 세일즈 넣고 그아래 숫자들 자동입력 단축키 알려주세요 그다음 타입에도 값을 주고 나서 전체매출출력 값 넣는 단축키도 알려주세요 어떻게 넣으면 되나요??
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
vivado install 오류
안녕하세요 맛비님 vivado install 과정에서 설치가 되지않는데 이유가 뭘까요?.. path도 바꿨고 버전도 가이드북에 있는 버전이랑 동일한데 계속 안되네요... (사진이 안보이시면 답글 달아주시면 작성코드로 올리겠습니다..)_
-
미해결AWS(Amazon Web Service) 중/상급자를 위한 강의
배포 방식 질문드립니다
안녕하세요 elastic beanstalk의 배포방식 중 트래픽 분할 방식에 대하여 트래픽을 컨트롤해서 capacity가 감소되지 않게 해준다고 설명해주셨는데 잘 이해가 안돼서 질문드립니다 트래픽 분할 방식은 어떤식으로 동작을 해서 capa 감소를 방지해주는지 구체적인 설명 부탁드립니다 감사합니다
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
javascript 넣는 위치 문의드립니다.
이전에 만든 javascript는 head 태그에서 불러왔는데, 부트스트랩의 javascript는 body태그 맨 아래쪽에서 불러오는 이유가 있을까요?
-
해결됨실전 리액트 프로그래밍
Context API vs Redux 사용 빈도
전에 강의를 듣고 제 것으로 못만든 부분이 있어 복습을 하는데 Context API는 Redux를 사용하면 대체가 다 가능한 것으로 저한테는 보이는데 실무에서 redux 대신에 context api를 쓸 경우가 있을까요?
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
xml파일 여는 툴이 뭘까요?
pdf 자료도 잘 쓰고 있지만 xml 파일도 열어보고 싶은데 방법을 찾지 못해 질문 남깁니다.
-
미해결모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original)
중급/심화 프로그래밍(예: TDD, 리팩토링, 멀티프로세스/쓰레드, 코루틴, 클로져등) 학습을 위한 교재 및 링크 추천 부탁드립니다.
안녕하세요. 파이썬 초/중급 및 본 강의를 모두 들었는데요, 파이썬 자체에 대해서는 강의내용으로도 충분이 잘 이해가 가게 설명해주셔서, 많은 도움을 받고 있습니다. 진심으로 감사드립니다. 그런데 제가 전산 전공자가 아니고 파이썬을 접하다 보니, 파이썬 자체보다, 중간에 설명해 주신 여러가지 개념들 (예: TDD, 리팩토링, 멀티프로세스/쓰레드 + 레이스컨디션, 데드락 등등, OOP, 코루틴, 클로져등)에 대해 개념에 대해 잘 알지 못해, 해당 개념을 이해하고, 예제코드, 실제 활용예제 등을 공부해 보고 싶습니다. 물론 하나하나 인터넷을 찾아보면 되겠지만, 회사에서 진행하는 정해진 교육일정(1주) 내에 내용을 다 이해해야 하다보니 시간 제약도 있고, 또한 위에 언급한 내용외에도 공부할 것이 있을텐데, 뭘 공부해야 하는지 조차 잘 모르겠습니다. 그래서 관련 내용들을 학습할 수 있는 도서를 몇개 추천해 주시면 감사하겠습니다. (잘 정리된 링크도 같이 공유해 주신다면 더욱 도움이 되겠습니다.) 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
10:22 생성자에서 cout 문장의 포함 여부에 따라서 왜 디버거의 행동이 달라지나요?
처음에 메모리 누수가 일어난 코드에서 cout << "Constructor " << endl; 이 문장을 안 써주면 디버깅이 안되고 쓰니까 디버깅이 되던데, 그냥 보여주는거 없이 메모리 누수만 일어나서 안썼을땐 디버거가 디버깅을 못하게 한건가요?
-
미해결
react 질문입니다. 카카오지도api 사용해서 입력값으로 #123 입력시 마커를 띄어주게 만들고 싶은데
입력으로 #123 입력할때 getXY(#123)함수에 들어가서 제가 정해준 좌표로 마커를 찍게끔 만들었는데....안찍어주네여.. 어떻게 해야하나요.. /*global kakao */ import React, {useState, useEffect } from 'react' function Map({searchPlace}) { useEffect(()=>{ mapscript(); }, []); const mapscript = () =>{ var container = document.getElementById('map'); var options = { center: new kakao.maps.LatLng(37.365264512305174, 127.10676860117488), level: 3 }; var map = new kakao.maps.Map(container, options); var position = new kakao.maps.LatLng(37.365264512305174, 127.10676860117488); var marker = new kakao.maps.Marker({ position: position, clickable: true // 마커를 클릭했을 때 지도의 클릭 이벤트가 발생하지 않도록 설정합니다 }); function marking(x,y){ var markerPosition = new kakao.maps.LatLng(37.365264512305174, 127.10676860117488); var marker = new kakao.maps.Marker({ position: markerPosition }); marker.setMap(map) } function getXY(state){ if(state === '#123'){ const setX = 37.365264512305174 const setY = 127.10676860117488 marking(setX,setY); } } getXY(pet_id) // input 데이터에 따라 위치 마커 변경 } const [pet_id, setPetId] = useState(''); console.log("hello = " + pet_id) return ( <div> <div id="map" className = 'centerMap' style={{width:"1500px", height:"800px"}}></div> <input type ="text" onChange= {(event) => {setPetId(event.target.value); }} ></input> </div> ); } export default Map;
-
미해결Node.js로 웹 크롤링하기
선택자 관련 질문 드립니다.
안녕하세요. 선택자 관련해서 잘 이해가 안가는점이 있어 문의드립니다. 크롬 console 에서 $$('tr.abc td')[1].textContent 명령어를 칠 경우 100이라는 숫자를 뽑아옵니다. 소스 코드 상에서 아래와 같이 여러 방법을 사용해봤는데요. 100 이라는 데이터를 못가져오더라고요. 관련해서 어떻게 접근해야 100 이라는 데이터를 가져올 수 있을까요? source code const text = await page.evaluate(() => { const num = document.querySelector('tr.abc td')[1]; return num.textContent;});const text = await page.evaluate(() => { const num = document.querySelectorAll('tr.abc td')[1]; return num;});const text = await page.evaluate(() => { const num = document.querySelector('tr.abc td'); return num;}); HTML 태그입니다. <tr class="abc"> <td class="text">숫자</td> <td>100</td> ... ... </tr>
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요. 테스트중에 csrf()에서 에러가 발생하는데 잘모르겠습니다.
안녕하세요. 다름이 아니라 5:44 쯤에 csrf() 추가해줬는데 이런 에러가 발생하는데 구글링 해봐도 잘 모르겠습니다. ㅜ 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmdetection관련 질문
강사님, 제가 Pascal VOC형태로 구성된 Custom Dataset에 대해 Object Detection을 수행하려고 합니다. 강의에서 잠깐 이야기 하셨던 것 같은데 mmdetection은 COCO 데이터셋의 형태에 맞춰서 구성이 되어있다고 하셨던 것 같은데 Pascal VOC 데이터셋의 형태로 구성되어 있는 Custom Dataset에 대해서는 kitti 데이터셋을 학습시키듯이 mmdetection의 CustomDataset을 상속 받아서 수행할 수 있는 건가요? 제 Custom Dataset은 data폴더 아래에 여러 폴더들로 구성되어 있고 하나의 폴더는 아래 그림과 같이 여러 이미지들을 저장하고 있는 1폴더와 여러 이미지들에 대해 annotation을 xml형식으로 저장하고 있는 1_annotations_v001_1폴더로 구성되어 있습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
table-per-class 방식에서 Identity 전략 사용에 대하여...
안녕하십니까 영한님. 강의 잘 듣고 있습니다. 강의를 듣던 중 클래스 별로 테이블을 가진다면 Identity 전략일 때 ID를 어떻게 가지게 되는지 궁금해서 실험해봤는데 에러가 발생하였습니다. 혼자서 생각한 바로는 부모 클래스에서 @ID를 사용한다는 것은, 자식별로 테이블을 따로 가져간다 하더라도 id 값은 달라야 하는 것으로 이해했고, Identity 전략을 허용할 경우 몇 번까지 id를 사용했는지 알 수 없기 때문에 같은 값이 들어가는 오류를 막기 위해서 테이블 create 시점에서 부터에 에러가 내는 것으로 이해되었는데 혼자 생각한 내용이기에 틀렸을 수도 있어 확인차 질문 올립니다ㅠㅠ
-
미해결실전! Querydsl
QueryDsl 테스트 작성 질문있습니다.
그냥 데이터베이스는 여러개가 있어서 entityManager가 여러개 생기는 것을 @Qualifier 로 구분할 수 있더라구요그런데 테스트를 작성할 때 서비스용 디비와 테스트용 디비를 구분하면 테스트 디비의 entityManager 로 JPAQueryFactory 를 생성해야 하는데 이 부분을 어떻게 처리할 수 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jpa 테스트시 계속 오류가 나네요;...
IDENTIFY 설정시 insert 시 키값을 자동으로 설정해서 받아오는 걸로 이해했는데 null 에러인지 발생하는거 같아요. 데이터 넣어놓고 읽어오는건 괜찮은거 같은데 insert가 잘 안되네요;.. javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:780) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:760) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy87.persist(Unknown Source) at com.example.demospring.repository.JpaMemberRepository.save(JpaMemberRepository.java:17) at com.example.demospring.service.MemberService.join(MemberService.java:26) at com.example.demospring.service.MemberService$$FastClassBySpringCGLIB$$25787b35.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at com.example.demospring.service.MemberService$$EnhancerBySpringCGLIB$$972d7024.join(<generated>) at com.example.demospring.service.MemberServiceIntegrationTest.회원가입(MemberServiceIntegrationTest.java:27) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$165/0x0000000000000000.apply(Unknown Source) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall$$Lambda$166/0x0000000000000000.apply(Unknown Source) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.ExecutableInvoker$$Lambda$369/0x0000000000000000.apply(Unknown Source) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$927/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$813/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$255/0x0000000000000000.invoke(Unknown Source) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$254/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$240/0x0000000000000000.accept(Unknown Source) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$813/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$255/0x0000000000000000.invoke(Unknown Source) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$254/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$240/0x0000000000000000.accept(Unknown Source) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$813/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$255/0x0000000000000000.invoke(Unknown Source) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$254/0x0000000000000000.execute(Unknown Source) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$216/0x0000000000000000.accept(Unknown Source) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200) at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:43) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3279) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3885) at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:84) at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645) at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282) at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263) at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317) at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:330) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:123) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) at org.hibernate.internal.SessionImpl$$Lambda$1709/0x0000000000000000.accept(Unknown Source) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:774) ... 105 more Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "ID"; SQL statement: insert into member (id, name) values (null, ?) [23502-202] at org.h2.message.DbException.getJdbcSQLException(DbException.java:508) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.table.Column.validateConvertUpdateSequence(Column.java:365) at org.h2.table.Table.convertInsertRow(Table.java:931) at org.h2.command.dml.Insert.insertRows(Insert.java:167) at org.h2.command.dml.Insert.update(Insert.java:135) at org.h2.command.CommandContainer.executeUpdateWithGeneratedKeys(CommandContainer.java:246) at org.h2.command.CommandContainer.update(CommandContainer.java:167) at org.h2.command.Command.executeUpdate(Command.java:247) at org.h2.server.TcpServerThread.process(TcpServerThread.java:413) at org.h2.server.TcpServerThread.run(TcpServerThread.java:190) at java.base/java.lang.Thread.run(Thread.java:836) at org.h2.message.DbException.getJdbcSQLException(DbException.java:459) at org.h2.engine.SessionRemote.done(SessionRemote.java:611) at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:237) at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:191) at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:152) at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ... 124 more
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
TableGenerator 의 경우 롤백이 되어도 시퀀스 값이 롤백되지 않는데 정상인가요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 작성한 엔티티는 다음과 같습니다. @Entity@Getter@Setter@NoArgsConstructor@TableGenerator( // 테이블 제너레이터를 사용하는 경우에는 반드시 @Id 명시되어 있어야 테이블 생성이 됩니다 name = "TABLE_GENERATOR", table = "SEQ_TABLE", pkColumnValue = "COL_GEN_TAB", allocationSize = 1)public class TableType { @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GENERATOR") private Long id; private String name; public TableType(String name) { this.name = name; }} 실행 시에 의도적으로 예외를 던져서 롤백을 했지만, SEQ_TABLE 에는 시퀀스가 롤백되지 않고 1로 늘어나 있었는데 왜 그런지 궁금합니다. TableType table = new TableType("테이블");em.persist(table);System.out.println(table);if (table.getName().equals("테이블")) throw new RuntimeException("오류 발생");