MemberRepositoryTest 를 돌리면 계속 fail이 뜹니다..ㅠ 스프링 버젼도 2.1.x 버젼이고 h2도 1.4.199로 하고 여기 질문방 검색해서 yml 2칸 들여쓰기도 제대로 했는데 ㅠㅠ안됩니다..ㅠㅠ h2도 연결은 시켜놨는데..ㅠㅠ이게 잘안된건지.. 오류코드는 이렇습니다.ㅠㅠ org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:256) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) 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:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at jpabook.jpashop.MemberRepository$$EnhancerBySpringCGLIB$$7d284dd8.save(<generated>) at jpabook.jpashop.MemberRepositoryTest.testMember(MemberRepositoryTest.java:22) 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.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 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.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) 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.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: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:294) at com.sun.proxy.$Proxy83.persist(Unknown Source) at jpabook.jpashop.MemberRepository.save(MemberRepository.java:14) at jpabook.jpashop.MemberRepository$$FastClassBySpringCGLIB$$a3e1a60b.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:752) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ... 34 more
선생님 안녕하세요. 제가 선생님 강의대로 코드를 작성하였는데 html 파일을 찾을 수 없다고하여 404 error가 자꾸 발생합니다. 기본적으로 restController가 아닌 controller로 해놓고 @Getmapping("/url") public String home(){ return "home"; } 이렇게만 선언을 하고, sources/templates 에 home.html파일을 만들어도 실제로 /url에 들어가보면 자꾸 404 error가 발생합니다. 인터넷에 많은 해결법이나 이유를 찾아보려고 모든 시도를 해봤지만 안됩니다.. view설정이 안된것같아서 spring.vnc.view.prefix, suffix 까지 설정을 해도 안되고해놓고 패키지도 상위 패키지에 Application을 두고 나머지 하위에 Controller를 두는 등 다 설정 해봤지만 무슨 이유인지 되지 않습니다.. 디펜던시로는 Spring web, rombok,thymeleaf 로 두었습니다. 도대체 무슨이유일까요..? another.thml은 templates 안에 두었습니다!
안녕하세요 Delete Duplicate Emails예제질문입니다 WHERE절 조건이 p1.Id>p2.Id 에 해당하는 것은 조인한 결과에서 4번째행에 3. john@example.com 1.john@example 밖에 없는데 나머지 첫번째 행과 다섯번째행은 어떻게 지워졌는지 모르겠어요
에러 관련하여 질문 드립니다. # 오류 내용 - https://image.tmdb.org/t/p/w1280undefined 404 - MovieDetail.js MainImage 컴포넌트에서 props으로 image url을 맞게 입력 했는데 자꾸 404 에러가 나옵니다ㅠ 화면에서 이미지 노출은 잘 되고 있습니다! # 참고 - https://github.com/kimsojung318/movie-app Github 주소 첨부하오니 확인 후 답변 부탁 드립니다..!
[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
안녕하세요! 수업을 듣다 궁금한 부분이 있어 문의 드립니다. 'EDA/pandas/시각화로 이커머스 구매 카테고리 분석(EDA5)' 수업 가장 마지막에 'plotly Ficture 객체로 그래프 그려보기' 에서 xaxis": { "title": "from Oct. 2016 to Sep. 2018", "showticklabels":True, "tick0": "2016-10-31", # 처음 tick 을 설정을 해주지 않을 경우, x 축이 밀리는 경우가 있음 "dtick": "M1", # 한 달 단위로 tick 설정 "tickfont": { "size": 7 } }, 중에 tick0와 dtick을 넣어주신 이유가 궁금합니다. 현재 데이터 프레임(products_category_order)의 컬럼은 'order_count' 밖에 없는데 이 데이터가 월 단위에 대한 count 값인지..주 단위에 대한 카운트 값인지...어떻게 알 수 있을까요? 비슷한 맥락으로 tick0를 설정하실때 현재 데이터 프레임(products_category_order) 만 가지고 tick0가 2016-10-31 임을 어떻게 알 수 있나요? ㅠㅠㅠ 답변 부탁 드리겠습니다 ㅠㅠㅠㅠ
안녕하세요, 선생님(?). 영한님의 온라인 팬인 스프링 주니어 백엔드 개발자입니다. 영한님의 교재와 ORM관련 강의를 듣고, 열심히 사내에서 적극적으로 도입하자고 강추한 결과 실무에 도입을 할 기회가 생겨서 적용하고 있습니다 ! (뿌듯) ----------- 인터페이스를 통한 다형성의 경우에는 JPA 스펙에서 지원하지 않는 것으로 알고있는데요, 강의에 나온 예제 도메인과 같이 (Item, Book ... 등등) 공통적으로 묶어줘야 할 데이터가 있는 경우에는 abstract class를 통한 부모-자식 상속관계로 표현하는 것이 맞다고 생각하나, 이는 자식 클래스가 부모 클래스에게 강하게 결합되기 때문에 다양한 타입의 객체가 수행해야 할 책임을 묶는 경우 에는 '인터페이스를 통해서 다형성을 구현하는 것이 더 맞지 않나?'라고 생각해서 질문드리게 되었습니다. 그러면, 실무에서는 JPA를 사용해서 도메인 객체를 표현할 때 인터페이스는 사용하지 않는지 궁금합니다. 혹은 사용하려면 이러한 문제를 실무에서는 어떻게 풀어나가는지 에 대해서도 궁금합니다. ----------- 항상 질 좋은 강의 들을 수 있게 해주셔서 감사합니다. - 영한님의 온라인 팬 주니어 개발자 -
안녕하세요? 김영한님 강의는 매우 잘 보고 있습니다. 다름이 아니라 변경감지와 병합 챕터를 보면서 정리 중에 있었는데 updateItem() 메소드를 아래와 같이 이해를 해도 될까요? @PostMapping(value = "/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form, @PathVariable String itemId) { Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/items"; } 여기서 보면, 객체는 우리가 만든 새로운 객체일지라도 setId(item.getId()) 을 통해서 기존 DB내에 존재하던 book의 식별자를 넣어준다. 따라서 JPA에 한번 들어갔다 나온 객체로 볼 수 있다. 하지만, new() 를 통해서 내가 직접 생성한 객체이기 때문에 JPA가 이것을 관리하지 않는다. 정리하자면, JPA가 식별할 수 있는 식별자를 갖고 있으나, 사용자가 임의로 생성한 객체라 JPA가 직접 관리하지 않는 객체를 준영속 엔티티라 볼 수 있다. 이 준영속 엔티티를 처리하기 힘든 이유가 무엇일까? 영속성 컨텍스트 관리 하에 있는 영속상태 엔티티는 JPA에 의해 감지가 되기때문에 변경 감지가 일어난다. 하지만, 준영속 엔티티는 JPA가 기본적으로 감지하지 않으므로 변경 감지가 일어나지 않는다. 위의 코드에서도 itemService.saveItem(book); 이 없다면, JPA 트랜잭션 안으로 우리의 준영속 엔티티인 Book이 들어갈리가 없기에 해당 문구가 없으면 아무런 변화도 일어나지 않는다. 즉, 여기서 우리는 itemService.saveItem(book); 을 통해서 해당 객체를 영속성 컨텍스트에 올려놓고 변경감지를 강제한다고 볼 수 있다. 위의 내용처럼 정리해도 맞는 부분일까요? itemService.saveItem()내를 타고 들어가면 ItemRepository.save() 함수가 나오는데 em.persist()와 같이 영속성컨텍스트에 올리는 것을 이를 가능하게끔 한다고 생각해서 정리해봤습니다. 물론 뒤에 em.merge()를 통해서 병합처리를 하는거지만요.
강사님 내실있는 강의 잘보고 있습니다. Scrapy 강의 따라하면서 강의 수강중인데 , Sublime Text로 코드 작성 후에 CMD에서 실행하면 indent 에러가 자주 발생합니다. 한번은 어떻게 하다보니 풀렸는데 또 발생했습니다. 화면상으로 indent가 잘 맞아 있는 것으로 보이는데 코드 실행시에 문제가 발생하고 있습니다. 저는 강의를 한번에 쭉 보지 못해서 조금씩 추가하고 중간에 넣고 하는 일이 잦은데 그것이 하나의 원인으로 생각됩니다. 이유는 강의를 장시간 보면서 한번에 쭉작성할 때는 문제가 없는데 다음날 한줄 추가해보면 문제 발생하는 경우가 많아서 입니다. 현재 상황에 대하여 켭처한 화면 같이 올립니다. 당장의 문제의 해결책이 아니더라도 indent 오류없이 코드 작성하는 요령 같은 것이라도 알려 주시면 감사하겠습니다. Sublime Text에서는 작성하기 편리하게 indent 안내선도 있고 접업다 폈하면서 상하위 위치도 파악할 수 있게 되있는데 그걸 활용하면서도 계속 문제가 발생하니 답답합니다. 추가로 indentation error 수정하는 법을 검색해 보니 일단 코드 전체 선택을 해서 에러난 부분을 파악하라는데 전체 선택을 해도 뭐가 문제인지 감이 안오네요 error 나는 discount_percent 부분을 주석 처리하고 실행하면 잘됩니다.
그러면 middleware는 어떤 action이든간에 dispatch되기전에 무조건 일어하는 선행 행위 같은 거라고 생각하면 되나요 ?ㅜㅜ 만일 middleware 여러개라면 return next(action)을 통해 모든 middleware을 실행한 뒤에 비로소야 dispatch가 실행되는거죠 ? 필요한 이유는 서버와의 동작같이 비동기 적으로 일어나는 경우에 데이터를 주고 받은 뒤에 dispatch 되어야 하니까 필요한 거구요! 어렵네요 미들웨어 ..