fetch join시 1:N 관계에 있는 엔티티에대해 alias를 사용하면 문제가 될 수 있다고 하셨는데 문제가 없을거라 생각하면서 테스트해봤지만 역시나여서 어떤 상황에서 문제가 생길지 생각해봐도 잘 떠오르지 않습니다. 팀 A 멤버1 나이 20 멤버2 나이 8 팀B 멤버 1 나이 20 인 조건에서 List<Team> cond1Team = em.createQuery("select t from Team t join fetch t.members m where m.age > 10).getResultList(); List<Team> cond2Team = em.createQuery("select t from Team t join fetch t.members).getResultList(); cond1Team.setName("newTeam") em.persist(cond1Team) em.clear() ---------------------- ---------------------- 이렇게 하면 소속이 꼬이나? - cond1Team하고 cond2Team에서 team들은 같은 엔터티일텐데 -cond1Team에서 이름을 바꾸면 여기에는 나이가 8살인 멤버가 포함이 안되니 소속 이름이 안바껴야 하는데 먼가 충돌이 생기나? 하면서 이대로 persiste후 List<Team> findTeams = em.createQuery("select t from Team t join fetch t.members).getResultList(); 로 조회 후 출력해봤는데 문제되는 상황은 없었습니다. cascade나 다른 옵션때문에 문제가 생길것 같은 상황도 잘 상상이 안가서 여쭤봅니다. ---------------------- ---------------------- 등록및 삭제과 연관될때 문제가 생길것 같으면서도 잘 모르겠고, 조회만 하는경우에는 문제가 없을것 같고 저렇게 조회할 당시에는 전혀 문제가 없어보이고, 팀에 대해 변경을 가하고 저장을하더라도 다음에 조회할때는 문제가 되지 않는다 -> 저렇게 조회를 해도 큰문제는 없다. 이렇게 계속 생각이듭니다. 물론, 조회하고나서 자신이 저렇게 쿼리를 날린 것을 잊고, 사용한다면 문제가 될것같지만, 그게 아닌경우에도 문제가 있는걸까요? ---------------------- ---------------------- 다른 케이스를 생각해봐도 어떤 경우에 문제가 될 수 있는지 잘 모르겠는데 언제 문제가 생길수 있는지 힌트를 주실 수 있을까요? (엔터티의 상태와, db의 상태의 일관성이 깨질때 어떤 문제가 발생할수 있는지) 답변주시면 감사드리겠습니다.
위와 같이 강의 내용 그래로 코드 작성하면 오류가 뜨네요 ㅠ 해당 줄을 std::lock_guard<mutex> lock(mtx); 로수정해서 일단 진행하긴 했는데 강의에서는 왜 오류가 뜨지 않은건가요? C++ 17으로 설정을 바꿔도 그래로 입니다 ㅠ std::scoped_lock도 컴파일오류가 나고 std 맴버로 가지고 있지 않다고 나와서 이후 진행을 못했습니다
Vercel 과정하다가.. 생각나서 그냥 적어봐요..ㅠ git/github는 정말 어려운거 같아요.. 하다가 계속 꼬이네요... 푸쉬 아주 조금?은 알꺼 같은데.... 다른 컴퓨터에서 github에 올라간 파일을 pull해가지고 받을려고 하니까 그것도 json쪽이 충돌나고.. 어렵네요 Vercel 과정중에.. 아직도 이해가 안가는 부분이 많네요 ㅠ Vercel 배포과정중에....깃허브에서 프로젝트가 여러개 생성이되더라구요 heroku가 저번시간에 힘들게 등록한다음에.. 잘 올라간 모습입니다. 정상적으로 돌아가는 모습.. 저거 정렬은 어떻게 할까요..? Vercel 배포 하다가 문제가 되는 부분들인데요.. 어디서 충돌나거나 이상하게 올라가서 그런지.. 배포가 꼬였습니다 강좌를 한참 따라가다가... 깃허브에 올리는것을 안해서 한꺼번에 올릴려고 하다보니까 꼬인거 같더라구요..ㅠ 배포해서 올라간게.. 히로쿠에 올라간게 아닌 로컬서버에 있던게 배포가 되었습니다.. Vercel 배포 과정중에 프로젝트 이름? 쓰는 란이있었는데요.. 그부분 쓰다가.. 만들고 올리고 수정하다보니까 생성이 여러개가 나왔습니다 문제는 깃허브에 프로젝트가 새로 생성됬는데요...ㅠ 이때부터 멘붕.... 깃허브에서 푸쉬해 올린거는... 메인프로젝트로 올라가더라구요.. Vercel 배포한 내용에는 올라가지 않았습니다 올라간거는.. 이름 새로 만들어진..거에 배포해서 올라간내용 깃에 올릴때.. 퓌시할때는 메인으로 올라가더라구요..Vercel 는 연동이 안됬습니다 강의자료 보면서 수정한 부분 이상한거 같아서.. 새로 다시 만들어서 진행 하였습니다. 이때도 프로젝트 이름이 충돌난다고 해서.. 숫자를 붙인 이름으로 했는데요.. 코드 오류나는 구간에서 다시 프로젝트 이름 작성하는 구간에서 기존 만들어진 프로젝트가 선택이 되더라구요.. 선택을 했습니다 올라가긴 했는데.. 강의 영상처럼 이미지가 변환된게 아닌 형태로 배포가 되더라구요 코드 약간 일부 수정하고 커밋한다음에 푸쉬한 다음에 새로고침 한내용인데.. 어디부분에 수정됬다고 하는지.. 내용이 안나오더라구요 ㅠㅜ 음.. 결론적으론 깃허브에 내용이 업로드되고 동작이 정상적으로 되더라구요... 기존에 있던 깃허브에 잘못만들어진 프로젝트 / Vercel 잘못 올라간 프로젝트 전부 지우고 정상동작되는것만 남겼습니다.. 주소란 다시 적용해서 링크 열어둔 모습 정상적으로 상품 업로드된 모습.. 어렵게...Vercel 과정을 마무리 했는데.. 강의 부분하고 똑같은 모습으로 끝나지 않아서 약간..이상한 기분이네요..ㅠ 위에 코드 바꾸고.. 새로 적용됬다라고 하는부분이 안나오는데 그건 왜그런걸까요..? 네.. 정리가 안됬는데.. 약간 푸념겸 먼가 적용이 안된부분이 있는거 같아서 문의 해봅니다..! 남은 과정..힘내봐야겠네요! (추가) 오늘 아침에.. vsc안키고.. 다시 링크만 타고 사이트 들어가보니까.. 어제 추가한 덤밸이 없어졌는데.. 왜그런거죠?
안녕하세요, 강의 잘 듣고 있습니다!! JPA 사용 중에 강의만으로는 어려운 문제를 만나 문의드립니다! JPA 트랜잭션에 대한 오류인것 같고 꽤 오래 찾아았으나, 아직 답을 찾지 못했습니다. 현상은 @Scheduled 가 추가된 메소드에서 다른 서비스 A의 @Transactional 메소드를 호출 시 아래와 같은 에러가 발생합니다. 예시) @Transactional public void changeStatus(Long id, String status) { Obj o = objRepository.findById(id).get(); o.setStatus(status); } 환경 SpringBoot 2.4 이며, 자동으로 설정되는 JpaTransactionManager 를 사용합니다. ============== 에러 메시지 ============== 2021-08-30 18:14:17.536 ERROR 18252 --- [ scheduler-1] o.s.s.s.TaskUtils$LoggingErrorHandler.handleError:95 - Unexpected error occurred in scheduled task org.springframework.orm.jpa.JpaSystemException: Unable to perform beforeTransactionCompletion callback: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.; nested exception is org.hibernate.HibernateException: Unable to perform beforeTransactionCompletion callback: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:331) Trace 로그로 볼 때에는 transaction marked for rollback only 라는 메시지도 나옵니다. 변경 감지로 할 경우와, save 메소드를 호출하는 경우 모두 발생하구요.. 제가 무언가 놓치고 있는 게 있다면, 조언 부탁드립니다!!
만약 데이터 건수가 400건이고 100건의 미니배치로 경사하강법을 실시하여 파라미터값들을 수정하는데 여기서 수정 되어지는 값들은 뽑아진 100건의 데이터만 업데이트 되며 이렇게 1epoch를 돌면 전체의 데이터의 파라미터들이 업데이트 되는것으로 이해하고있는데 맞을까요? 아니면 100건의 데이터만 뽑아 전체의 파라미터가 업데이트 되고 또 그다음 배치의 100건으로 전체의 파라미터가 업데이트 되는 걸까요?
안녕하세요. 강의 수강중인 수강생입니다. 안드로이드 앱 개발이 처음이라 그런데, 레이아웃 생성 실습을 위해 안드로이드 프로젝트를 생성하였더니, activity_main.xml 이 존재하지 않더군요. 제가 생성한 프로젝트는 강의 영상에서 잠깐 보였던 코틀린으로 했는데 실습환경 어떻게 구성해야 하는지 답변 부탁드립니다.
#include <iostream> #include <vector> using namespace std; int main() { int n, k, sum = 0, max = 0; cin >> n >> k; std::vector<int> a(n); for (int x = 0; x < n; x++) { cin >> a[x]; } for (int x = 0; x < k; x++) { sum += a[x]; } max = sum; for (int x = k; x < n; x++) { sum = sum + (a[x] - a[x - k]); if (max < sum) { max = sum; } } cout << max; return 0; } 코드에 어떤 문제가 있는건지 모르겠습니다.
예를들어 shared_ptr<Player> A = std::make_shared<Player>(); shared_ptr<Player> B = std::make_shared<Player>(); A = B; B = A; 이렇게 있다고 하면 메모리 상황은 A B 변수둘다 한 스코프에 있다고 했을때 변수 A에 대해서 스코프에 벗어나 스택에서 Pop이 일어날 경우에 변수 A가 heap영역에서 가리키고 있는 Player 객체는 위 그림에서 처럼 2개인데(현재 heap Player객체 2개의 대한 각각의 RefCount값은 2인상태) 가리키고 있는것 중 1개만 해제를 시킨다고 보는게 정확한건가요? 메모리릭이 발생하지 않으려면 해제를 한 변수당 2번을 해줘야 된다고 생각하고 있는데 A B 둘다 가리키고 있는것은 각각 2개인데 정작 스택에서 벗어날때에는 1개씩만 해제를 시켜주어서 메모리릭이 발생하는건가 긴가민가해서 질문드립니다.
기사 돈키호테 문제에서 Knight 클래스의 변수 name, hp는 private 접근 제한자라 다른 클래스에서 접근할 수가 없는데 Knight 클래스 내부에 위치한, name, hp를 출력하는 toString 함수는 게터, 세터 함수가 없이도 외부 클래스(Main 클래스) 에서 사용이 되는데 왜 사용이 되는건가요? 그리고 this는 단지 이름이 같은 변수끼리 구분을하기 위한 용도고 멤버 변수에 해당하는 변수에만 this.를 붙인다 라고 생각하면 될까요?
안녕하세요, 선생님! 강의에서 보여주신 코드와 완전히 똑같지는 않습니다. 여러 개의 Item들을 담은 ArrayList, 각 Item의 주문 수량들을 담은 ArrayList를 memberId와 함께 넘겨 order 메소드를 만들려고 합니다. 그런데..Order 엔티티의 기본키 매핑(@Id)을 Long으로 했는데도 이런 오류가 발생합니다. 어떻게 해결할 수 있을까요..ㅠㅠ Member, Order, OrderItem 의 id 타입이 전부 Long인데 왜 java.lang.String이 발생하는 지도 잘 모르겠습니다..! org.springframework.orm.jpa.JpaSystemException: Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String OrderServiceTest.java 입니다. @SpringBootTest @Transactional class OrderServiceTest { @PersistenceContext EntityManager em ; @Autowired OrderService orderService ; @Autowired OrderRepository orderRepository ; @Test public void 상품주문 () { Member member = createMember() ; Book item1 = createBook( " 시골 JPA" , 10000 , 10 ) ; Book item2 = createBook( " 도시 JPA" , 20000 , 15 ) ; Book item3 = createBook( " 부산 Spring" , 30000 , 12 ) ; Book item4 = createBook( " 서울 클린코드 " , 25000 , 7 ) ; int orderCount1 = 2 ; int orderCount2 = 3 ; int orderCount3 = 5 ; int orderCount4 = 4 ; ArrayList<Item> items = new ArrayList<>() ; items.add(item1) ; items.add(item2) ; items.add(item3) ; items.add(item4) ; ArrayList<Integer> itemCounts = new ArrayList<>() ; itemCounts.add(orderCount1) ; itemCounts.add(orderCount2) ; itemCounts.add(orderCount3) ; itemCounts.add(orderCount4) ; Long orderId = orderService .order(member.getId() , items , itemCounts) ; Order getOrder = orderRepository .findOne(orderId) ; Assertions.assertThat(getOrder.getStatus()).isEqualTo(OrderStatus. ORDER ) ; } private Member createMember () { Member member = new Member() ; member.setName( " 회원 1" ) ; member.setAddress( new Address( " 서울 " , " 강가 " , "123-123" )) ; em .persist(member) ; return member ; } private Book createBook (String name , int price , int stockQuantity) { Book book = new Book() ; book.setName(name) ; book.setStockQuantity(stockQuantity) ; book.setPrice(price) ; em .persist(book) ; return book ; } } OrderService.java 입니다. @Service @Transactional (readOnly = true ) @RequiredArgsConstructor public class OrderService { private final MemberRepository memberRepository ; private final OrderRepository orderRepository ; private final ItemRepository itemRepository ; /** 주문 **/ @Transactional public Long order (Long memberId , ArrayList<Item> items , ArrayList<Integer> itemCounts) { if (items.size() != itemCounts.size()) { throw new IllegalStateException( " 정보가 안 맞다 ..! -_- " ) ; } // 멤버 조회 Member member = memberRepository .findOne(memberId) ; // 배송정보 생성 Delivery delivery = new Delivery() ; delivery.setAddress(member.getAddress()) ; delivery.setStatus(DeliveryStatus. READY ) ; // 상품 조회 + 주문상품 생성 ( 여러 개 ) List<OrderItem> orderItems = new ArrayList<>() ; for ( int i = 0 ; i < items.size() ; i++) { Item item = items.get(i) ; Integer getCount = itemCounts.get(i) ; OrderItem orderItem = OrderItem. createOrderItem (item , item.getPrice() , getCount) ; orderItems.add(orderItem) ; } // 주문 생성 Order order = Order. createOrder (member , delivery , orderItems) ; // 주문 저장 orderRepository .save(order) ; return order.getId() ; } @Transactional public void cancelOrder (Long orderId) { Order order = orderRepository .findOne(orderId) ; order.cancel() ; } /** 주문 검색 */ } OrderRepository.java 입니다. @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em ; public void save (Order order) { em .persist(order) ; } public Order findOne (Long id) { return em .find(Order. class, id) ; } // public List<Order> findAll(OrderSearch orderSearch) { ... } // todo 검색 기능 } 에러 중간에 ArrayList.foreach에 대한 에러가 나오는데 혹시 OrderService에 있는 order 메소드에 ArrayList를 인자로 하는 게 잘못인지... 만약 그렇다면 왜 잘못인지 아니면 다른 원인이 있는지 잘 모르겠습니다.....! 에러 전체입니다. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:331) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) at toyproject.toyshop.repository.OrderRepository$$EnhancerBySpringCGLIB$$4f1e69f7.save(<generated>) at toyproject.toyshop.service.OrderService.order(OrderService.java:50) at toyproject.toyshop.service.OrderService$$FastClassBySpringCGLIB$$20f2b7ad.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) 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:750) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) at toyproject.toyshop.service.OrderService$$EnhancerBySpringCGLIB$$bd14ca3b.order(<generated>) at toyproject.toyshop.service.OrderServiceTest.상품주문(OrderServiceTest.java:49) 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:688) 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.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) 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$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) 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.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:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) 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:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:224) at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:98) at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40) at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:523) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:110) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:744) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:712) at org.hibernate.engine.spi.CascadingActions$7.cascade(CascadingActions.java:298) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:499) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:423) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153) at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:427) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:264) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:135) 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.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:99) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:720) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:706) 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.$Proxy94.persist(Unknown Source) at toyproject.toyshop.repository.OrderRepository.save(OrderRepository.java:16) at toyproject.toyshop.repository.OrderRepository$$FastClassBySpringCGLIB$$e1a71a21.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 83 more 감사합니다.