학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MemberRepository /** * JPA Hint */ @QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value = "true")) Member findReadOnlyByUsername(String username); test @Test @Rollback(false) void findReadOnlyByUsername() { // given memberRepository.save(new Member("member1", 10)); em.flush(); em.clear(); // when Member member = memberRepository.findReadOnlyByUsername("member1"); // 쿼리힌트로 readonly 설정 member.setUsername("member2"); em.flush(); // update 쿼리가 나가지 않음 em.clear(); System.out.println("member.getUsername() = " + member.getUsername()); } 영한님이 설명해주신대로 update 쿼리가 나가지 않아서 실제 DB 상에는 member2 가 아닌 member1 이 들어가있음을 확인했습니다 그리고 em.clear() 로 영속성컨텍스트를 초기화 한 후, member 의 username 을 찍어봤는데 member2 가 찍히더라구요 저는 영속성 컨텍스트를 초기화했으므로, member 조회 시 DB 에서 가져오므로 member1 이 찍힐 것이라고 생각했는데 제 생각이 틀린 건가요? 아래는 출력로그 입니다 2023-08-14 17:17:17.797 INFO 15063 --- [ main] p6spy : 23.08.14 17:17:17 | OperationTime 4 ms | statement | connection 3 select member0_.member_id as member_i1_0_, member0_.age as age2_0_, member0_.team_id as team_id4_0_, member0_.username as username3_0_ from member member0_ where member0_.username='member1' member.getUsername() = member2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberApiController 수정시 /** * 수정 */ @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); Member findMember = memberService.findOne(id); return new UpdateMemberResponse(findMember.getName(), findMember.getId()); } @Data static class UpdateMemberRequest{ private String name; } @Data @AllArgsConstructor static class UpdateMemberResponse{ private String name; private Long id; } 수정할때 PathVariable로 url주소에서 맵핑하셨는데 그냥 @PutMapping(""/api/v2/members/")로 하고, UpdateMemberRequest 클래스에서 id를 필드로 추가한 후 @PutMapping("/api/v2/members") public UpdateMemberResponse updateMemberV2( @RequestBody @Valid UpdateMemberRequest request) { memberService.update(request.getId(), request.getName()); Member findMember = memberService.findOne(request.getId()); return new UpdateMemberResponse(findMember.getName(), findMember.getId()); } memberService.update(id, request.getName()); 가 아닌 memberService.update(request.getId(), request.getName()); id를 PathVariable로 받지말고, request에서 받아서 설계해도 될까요? PathVariable을 사용하는 이유가 궁금합니다.
강의에서는 아래와 같이 select 쿼리를 이용해 업데이트 된 회원을 조회후 response로 전달해 주었는데 @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id,request.getName()); Member findMember = memberService.findOne(id); return new UpdateMemberResponse(findMember.getId(), findMember.getName()); } 아래와 같이 하지 않은 이유가 있을까요?? @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요? 어제부터 계속 시도해보는데 해결되지 않아 질문 드립니다.. JPA와 DB 설정, 동작 확인 강의에서, Test를 실행하려는데 아래와 같은 에러가 발생합니다. 에러를 해결해보기 위해 여기 질문게시판을 찾아보았으나, 저와 상관 없는 사유였거나 해당 솔루션으로 해결되지 않았습니다... H2 실행한 상태이고, jpashop.mv .db도 생성된 상태입니다. Junit 4이고, 원래는 5였는데 선생님께서 진행하신 버전이 4라서 다시 삭제하고 재생성하여 진행하였습니다. H2 버전 2.1.214로 낮춰보라는 글도 있어 전부 삭제 후 다시 설치하여 db 다시 생성해보았기도 했는데 실패하였습니다.. 아래는 에러코드 전문이며, 제 코드는 Google Drive에 올려 URL로 달아두었습니다.. 도와주시면 감사하겠습니다. Google Drive: https://drive.google.com/drive/folders/1ZKGI6dlldF4RAEfNdmaRrFlmBxTatQww?usp=sharing <에러코드> java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@79fd6f95 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3f197a46, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@50b472aa, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@4facf68f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@243c4f91, org.springframework.boot.test.context.SpringBootTestAnnotation@83724131], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:143 ) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext( DefaultTestContext.java:127 ) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary( ServletTestExecutionListener.java:191 ) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance( ServletTestExecutionListener.java:130 ) at org.springframework.test.context.TestContextManager.prepareTestInstance( TestContextManager.java:241 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest( SpringJUnit4ClassRunner.java:228 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall( SpringJUnit4ClassRunner.java:289 ) at org.junit.internal.runners.model.ReflectiveCallable.run ( ReflectiveCallable.java:12 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock( SpringJUnit4ClassRunner.java:291 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:247 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:97 ) at org.junit.runners.ParentRunner$4.run( ParentRunner.java:331 ) at org.junit.runners.ParentRunner$1.schedule( ParentRunner.java:79 ) at org.junit.runners.ParentRunner.runChildren( ParentRunner.java:329 ) at org.junit.runners.ParentRunner.access$100( ParentRunner.java:66 ) at org.junit.runners.ParentRunner$2.evaluate( ParentRunner.java:293 ) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate( RunBeforeTestClassCallbacks.java:61 ) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate( RunAfterTestClassCallbacks.java:70 ) at org.junit.runners.ParentRunner$3.evaluate( ParentRunner.java:306 ) at org.junit.runners.ParentRunner.run ( ParentRunner.java:413 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run ( SpringJUnit4ClassRunner.java:191 ) at org.junit.runner.JUnitCore.run ( JUnitCore.java:137 ) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs( JUnit4IdeaTestRunner.java:69 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:235 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:54 ) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository': Injection of persistence dependencies failed at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor.postProcessProperties( PersistenceAnnotationBeanPostProcessor.java:388 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.populateBean( AbstractAutowireCapableBeanFactory.java:1416 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:597 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:520 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:326 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:324 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:200 ) at org.springframework.beans.factory.support .DefaultListableBeanFactory.preInstantiateSingletons( DefaultListableBeanFactory.java:973 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:942 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:608 ) at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:734 ) at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:436 ) at org.springframework.boot.SpringApplication.run ( SpringApplication.java:312 ) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3( SpringBootContextLoader.java:137 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:58 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:46 ) at org.springframework.boot.SpringApplication.withHook( SpringApplication.java:1406 ) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run( SpringBootContextLoader.java:545 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:137 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:108 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal( DefaultCacheAwareContextLoaderDelegate.java:187 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:119 ) ... 27 more Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jakarta.persistence.EntityManagerFactory' available at org.springframework.beans.factory.support .DefaultListableBeanFactory.resolveNamedBean( DefaultListableBeanFactory.java:1247 ) at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor.findDefaultEntityManagerFactory( PersistenceAnnotationBeanPostProcessor.java:593 ) at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor.findEntityManagerFactory( PersistenceAnnotationBeanPostProcessor.java:557 ) at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor$PersistenceElement.resolveEntityManager( PersistenceAnnotationBeanPostProcessor.java:724 ) at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor$PersistenceElement.getResourceToInject( PersistenceAnnotationBeanPostProcessor.java:697 ) at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject( InjectionMetadata.java:270 ) at org.springframework.beans.factory.annotation.InjectionMetadata.inject( InjectionMetadata.java:145 ) at org.springframework.orm.jpa.support .PersistenceAnnotationBeanPostProcessor.postProcessProperties( PersistenceAnnotationBeanPostProcessor.java:385 ) ... 49 more
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 다름이 아니라 강의를 전부 다 보고 궁금한 점이 있어서 질문드립니다. 기존에는 MemoryMemberRepository 에 대한 unit test 를 진행 했는데 Jpa로 변경한 후에는 각각에 대해 어떤식으로 unit test 를 진행 해야되는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] header.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head th:fragment="header"> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink- to-fit=no"> <!-- <!– Bootstrap CSS –>--> <!-- <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384- --> <!-- ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"--> <!-- crossorigin="anonymous">--> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">> <!-- Custom styles for this template --> <link href="/css/jumbotron-narrow.css" rel="stylesheet"> <title>Hello, world!</title> </head> 현재 header.html 파일 코드는 이렇게 되어 있습니다. 부트스트랩 버전이 강의와 다르면 점보트론 적용이 잘 안 된다는 이야기가 있어서 호환을 위해 기존 코드는 주석 처리 하고 <!-- <!– Bootstrap CSS –>--> <!-- <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384- --> <!-- ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"--> <!-- crossorigin="anonymous">--> 새로운 코드를 붙여넣었습니다. <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">> 가운데 정렬이 안 되는 이유가 뭔지 알고 싶습니다..
Page 방식에서 api response 를 줄 때 엔티티-> DTO 변환은 Page 인터페이스에서 지원하는 map 을 이용하는 것이라고 이해했습니다. Slice 인터페이스의 스펙에는 map 함수가 없던데 Slice 를 사용할 때 엔티티-> DTO 변환은 어떻게 해야 하나요?
먼저 양질의 강의를 제공해주신 점에서 매우 감사하다는 말씀을 드리고 있습니다. 강의에서 /app란 값을 @Value로 주입을 해줬을때 ${contextPath}만 출력이 되는 부분에 질문이 있습니다. 제가 이해하기로는 커스텀 빈들이 먼저 주입이 되기 때문에 실제로 스프링부트의 인프라스트럭처 빈인 PropertySourcesPlaceholderConfigurer가 주입이 되지 않아 ${contextPath}가 나온다고 이해를 했습니다. 제가 이해한게 맞다면 빈의 주입 순서에 따라 @Value의 값이 달라진다는 것인데, 만약 tobyspring.config.autoconfig.PropertyPlaceholderConfig 이 클래스가 tobyspring.config.autoconfig.TomcatWebServerConfig 이 클래스보다 더 늦게 주입이 된다면 여전히 ${contextPath}가 나오게 되는지 궁금합니다! 또한 테스트를 한 번 해보고싶어서 계속해서 시도해봤지만 테스트 방법이 도저히 감이 오질않는데, 이럴 때는 어떻게 테스트를 하면 되는지 알 수 있을까요?
안녕하세요 강사님. 13분 20 초쯤 보시면 디폴트 로그인 페이지에서 href 걸려있는 oauth2-client-app 이라는 링크를 누르게 되면 인가서버의 로그인페이지로 이동하는 것을 보실 수 있습니다. 여기서 제가 궁금한 것은 oauth2-client-app 이라는 링크를 누르는 순간 /oauth2/authorization/keycloak 경로의 요청이 Client 로 보내지게 되고, Client 에서 해당 경로로 요청이 들어오길 기다리고있던 OAuth2AuthorizationRequestRedirectFilter 가 내부적으로 권한부여 요청을 보낼 수 있는 uri 인 authorization-uri 로 Redirection 시키게되어 현재 로그인페이지로 이동한것인가요? 보다 정확하게 알고싶어 이렇게 질문드립니다!! 아 그리고 강의 너무나도 잘듣고있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. [질문 내용] MemberRepositoryTest에서 계속 오류가 발생합니다. 강사님이 진행 하시는 대로 똑같이 쳤고 강의 자료에서 하라는 것 까지 다 해보고 이것저것 몇시간을 해봤는데 계속 오류가 나요... 근데 특이한 점은 다른 분들은 처음부터 안된다고 하시는데 저는 처음에 h2 DB파일 생성한 다음 localhost모드로 바꿔서 들어가고 나서 Test를 돌리면 성공을 합니다. 실제로 테이블도 생성되구요. 근데 그 다음부터 두번째 부터는 계속 Failed to load ApplicationContext 오류가 발생합니다... member memberRepository memberRepositoryTest db 첫 생성시에는 성공 이후로 계속 오류 build.gradle파일... 부트버전은 3.1.2구요 그래서 junit5를 사용했습니다. application.yml파일 java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@1573e8a5 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@1b2abca6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@342c38f8, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@54bff557, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4dbb42b7, org.springframework.boot.test.context.SpringBootTestAnnotation@4ec067d1], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:143 ) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext( DefaultTestContext.java:127 ) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary( ServletTestExecutionListener.java:191 ) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance( ServletTestExecutionListener.java:130 ) at org.springframework.test.context.TestContextManager.prepareTestInstance( TestContextManager.java:241 ) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance( SpringExtension.java:138 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$10( ClassBasedTestDescriptor.java:377 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable( ClassBasedTestDescriptor.java:382 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$11( ClassBasedTestDescriptor.java:377 ) at java.base/java.util.stream.ReferencePipeline$3$1.accept( ReferencePipeline.java:197 ) at java.base/java.util.stream.ReferencePipeline$2$1.accept( ReferencePipeline.java:179 ) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining( ArrayList.java:1625 ) at java.base/java.util.stream.AbstractPipeline.copyInto( AbstractPipeline.java:509 ) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java:499 ) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining( StreamSpliterators.java:310 ) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining( Streams.java:735 ) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining( Streams.java:734 ) at java.base/java.util.stream.ReferencePipeline$Head.forEach( ReferencePipeline.java:762 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors( ClassBasedTestDescriptor.java:376 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6( ClassBasedTestDescriptor.java:289 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance( ClassBasedTestDescriptor.java:288 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4( ClassBasedTestDescriptor.java:278 ) at java.base/java.util.Optional.orElseGet( Optional.java:364 ) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5( ClassBasedTestDescriptor.java:277 ) at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances( TestInstancesProvider.java:31 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0( TestMethodTestDescriptor.java:105 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare( TestMethodTestDescriptor.java:104 ) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare( TestMethodTestDescriptor.java:68 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.lambda$prepare$2( NodeTestTask.java:123 ) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.prepare( NodeTestTask.java:123 ) at org.junit.platform.engine.support .hierarchical.NodeTestTask.execute( NodeTestTask.java:90 ) at java.base/java.util.ArrayList.forEach( ArrayList.java:1511 ) 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.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.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.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 java.base/java.util.ArrayList.forEach( ArrayList.java:1511 ) 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.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.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.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:147 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:127 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:90 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0( EngineExecutionOrchestrator.java:55 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams( EngineExecutionOrchestrator.java:102 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:54 ) 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:57 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:232 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:55 ) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1770 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:598 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:520 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:326 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:324 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:200 ) at org.springframework.context.support .AbstractApplicationContext.getBean( AbstractApplicationContext.java:1155 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:932 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:608 ) at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:734 ) at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:436 ) at org.springframework.boot.SpringApplication.run ( SpringApplication.java:312 ) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3( SpringBootContextLoader.java:137 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:58 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:46 ) at org.springframework.boot.SpringApplication.withHook( SpringApplication.java:1406 ) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run( SpringBootContextLoader.java:545 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:137 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:108 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal( DefaultCacheAwareContextLoaderDelegate.java:187 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:119 ) ... 72 more Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory( AbstractEntityManagerFactoryBean.java:421 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet( AbstractEntityManagerFactoryBean.java:396 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet( LocalContainerEntityManagerFactoryBean.java:352 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1817 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1766 ) ... 93 more Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] at org.hibernate.id .factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator( StandardIdentifierGeneratorFactory.java:230 ) at org.hibernate.id .factory.internal.IdentifierGeneratorUtil.createLegacyIdentifierGenerator( IdentifierGeneratorUtil.java:126 ) at org.hibernate.mapping.SimpleValue.createGenerator( SimpleValue.java:414 ) at org.hibernate.internal.SessionFactoryImpl.lambda$createGenerators$1( SessionFactoryImpl.java:413 ) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept( ForEachOps.java:183 ) at java.base/java.util.stream.ReferencePipeline$2$1.accept( ReferencePipeline.java:179 ) at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining( HashMap.java:1779 ) at java.base/java.util.stream.AbstractPipeline.copyInto( AbstractPipeline.java:509 ) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto( AbstractPipeline.java:499 ) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential( ForEachOps.java:150 ) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential( ForEachOps.java:173 ) at java.base/java.util.stream.AbstractPipeline.evaluate( AbstractPipeline.java:234 ) at java.base/java.util.stream.ReferencePipeline.forEach( ReferencePipeline.java:596 ) at org.hibernate.internal.SessionFactoryImpl.createGenerators( SessionFactoryImpl.java:412 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:249 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:431 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:1455 ) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory( SpringHibernateJpaPersistenceProvider.java:75 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory( LocalContainerEntityManagerFactoryBean.java:376 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory( AbstractEntityManagerFactoryBean.java:409 ) ... 97 more Caused by: org.hibernate.HibernateException: Could not fetch the SequenceInformation from the database at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList( ExtractedDatabaseMetaDataImpl.java:307 ) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.getSequenceInformationList( ExtractedDatabaseMetaDataImpl.java:151 ) at org.hibernate.id .enhanced.SequenceStyleGenerator.getSequenceIncrementValue( SequenceStyleGenerator.java:568 ) at org.hibernate.id .enhanced.SequenceStyleGenerator.configure( SequenceStyleGenerator.java:216 ) at org.hibernate.id .factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator( StandardIdentifierGeneratorFactory.java:224 ) ... 116 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "start_value" not found [42122-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) 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.jdbc.JdbcResultSet.getColumnIndex( JdbcResultSet.java:3492 ) at org.h2.jdbc.JdbcResultSet.getLong( JdbcResultSet.java:745 ) at com.zaxxer.hikari.pool.HikariProxyResultSet.getLong( HikariProxyResultSet.java ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.resultSetStartValueSize( SequenceInformationExtractorLegacyImpl.java:110 ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.lambda$extractMetadata$0( SequenceInformationExtractorLegacyImpl.java:54 ) at org.hibernate.tool.schema.extract.spi.ExtractionContext.getQueryResults( ExtractionContext.java:50 ) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata( SequenceInformationExtractorLegacyImpl.java:39 ) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList( ExtractedDatabaseMetaDataImpl.java:291 ) ... 120 more ㅜㅜ 진짜 3시간째 이거 잡고있는데 이유를 모르겠어요