아래 내용 검색해보니 SIZE(t.member)로 사용하라고 안내하는데 왜 저는 안되는걸까요...? java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: illegal attempt to dereference collection [ com.example.jpql.jpql.Team (t).members] with element property reference [size] Caused by: org.hibernate.query.SemanticException: illegal attempt to dereference collection [ com.example.jpql.jpql.Team (t).members] with element property reference [size]
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요! 플러시 강의 54초 부분에서 플러시 발생 시 수정된 엔티티 가 쓰기 지연 SQL에 등록된다고 하셨는데, 그럼 member.setUsername(",,,"); 와 같은 변경 메소드 호출 변경은 영속성 컨텍스트에 바로 반영됨 쓰기 지연 SQL 저장소에 UPDATE SQL 등록 commit()후 flush()가 호출되며 스냅샷과 영속성 컨텍스트에 등록되어있는 엔티티 사이의 불일치 감지 변경된 엔티티를 쓰기 지연 SQL 저장소에 등록 flush로 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송 와 같이 동작하는 것이 맞나요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 아직 @Column등의 어노테이션이 좀 헷갈려서 테이블과 코드를 같이보며 익숙해지려하고있는 상태에서 테이블을 보니, 예를들면 orders테이블에 ORDER_DATE가 추가가 되있고 코드에서는 private LocalDateTime orderDate; 와 같이 다른 어노테이션이 붙지 않앗음에도 데이터베이스에 추가가 되는거같아보입니다. 그럼 제가 이해하기론 따로 컬럼명을 바꿔서 넣고싶을떄 어노테이션에 name=""필드를 추가하고 아닐땐 그냥 필드 선언만 하면 되는건가요? 제가 이해를 제대로 한건지 모르겟어요 ㅠㅠ
강사님이 커밋하며 내부적으로 flush 가 호출된다고 했는데.. 왜 1번과 4번에 flush 가 두번있는건가요? 내부적으로 flush 일어난다는게 1번과 4번 어떤건가요? 커밋은 5번인데.. 처음에 어플리케이션 코드에인 tx.commit() 이것을 호출하면 내부적으로 1번의 flush 가 호출된다는건가요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 강의 잘 듣고 있습니다. @Tansactional 어노테이션을 붙이면 private 메서드들에도 해당 어노테이션이 적용되는 건가요? 이 질문을 하는 이유는 join 메서드 안에서 validateDuplicateMember 메서드를 사용하고 있고 join은 @Transactional이 걸려있는 상태인데 이럴 경우에 어떤 게 적용되는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 일대일 관계에서 외래 키를 대상 테이블에 넣을 때 왜 양방향 관계만 JPA에서 지원하고 단방향은 지원하지 않는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 단방향 매핑이랑 양방향 매핑의 차이점에 대해 생각해보았습니다. 먼저, DB에서 FK 하나만 있으면 양 테이블 Join 조회가 가능해서 FK 는 단방향 매핑처럼 DB 테이블에 존재하면 된다고 이해했습니다. 그래서 단방향 매핑과 양방향 매핑의 차이는 FK "하나"를 가지고 단방향 이동을 할것인가 or 양방향 이동을 할것인가 의 차이 -> 이 경우는 양방향 매핑은 mappedBy 로 객체 세상에서 기존 단방향에서 양방향으로 접근이 가능하게 만들고(DB에선 원래 가능했음), By 쪽에서 DB 세상의 반대쪽 매핑 테이블 값을 변경하지 못하도록 JPA 에서 막는다고 이해했습니다. 제가 이해한 게 맞는지 궁금합니다. 추가적으로 @OneToMany 가 붙은 컬럼은 데이터베이스 테이블에 생성되지 않는건가요 원래?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 5. 열거형 - ENUM.pdf 의 p.18 에 SLIVER 오타가 있습니다. SLIVER -> SILVER 로 변경되어야 할 것 같습니다.
안녕하세요 영한님! 저는 V4 방식으로 조회를 할 때, 주로 querydsl을 사용해서 쿼리를 작성합니다. (new 키워드도 제거할 수 있고, 좀 더 직관적인 이유 때문입니다.) 이런 경우 쿼리용 레포지토리를 분리할 때 쿼리 레포지토리용 CustomRepository를 따로 작성해줘야 하나요?? 엔티티 조회용 OrderRepository CustomOrderRepository 쿼리 조회용 (DTO) OrderQueryRepository CustomOrderQueryRepository
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 재고수량 초과할 때 NotEnoughStockException 예외가 터져야 하는데 InvalidDataAccessApiUsageException 예외가 나오네요에러 메세지와 코드 첨부하겠습니다 [error message]java.lang.Exception: Unexpected exception, expected<jpabook2.jpashop2.exception.NotEnoughStockException> but was<org.springframework.dao.InvalidDataAccessApiUsageException> at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:30) 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:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) 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:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: id to load is required for loading at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.repository.ItemRepository$$SpringCGLIB$$0.findOne(<generated>) at jpabook2.jpashop2.service.OrderService.order(OrderService.java:34) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.service.OrderService$$SpringCGLIB$$0.order(<generated>) at jpabook2.jpashop2.service.OrderServiceTest.재고수량_초과(OrderServiceTest.java:62) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) ... 23 moreCaused by: java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:77) at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:43) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:206) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:160) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:149) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:112) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:149) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2424) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2390) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) at jdk.proxy2/jdk.proxy2.$Proxy123.find(Unknown Source) at jpabook2.jpashop2.repository.ItemRepository.findOne(ItemRepository.java:25) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 55 more[코드] @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test(expected = NotEnoughStockException.class) public void 재고수량_초과() throws Exception { //given Member member = createMember(); Item item = createBook("JPA book", 10000, 10); int orderCount = 11; //when orderService.order(member.getId(), item.getId(), orderCount); //then fail("재고 수량 부족 예외가 발생해야 한다."); }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx ) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG ) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Member findMember = em.find(Member.class, member.getId()); em.detach(findMember); System.out.println("findMember.getUsername() = " + findMember.getUsername()); 프록시를 detach() 했을땐 이름 조회 안되고, find()로 했을 땐 detach() 해도 이름 조회되는게 프록시는 껍질 엔티티를 받는거라서 detach() 하면 안되고, find 로 받으면 실제 엔티티라서 detach() 해도 이름 조회가 되는건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] MemeberServiceTest 다 돌려봤는데 outerTxOff_fail()만 에러 뜨는게 정상인거죠??
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
7강 듣는 중에 갑자기 완성된 도서관 UI를 보여주셨는데 해당 index.html에는 해당 소스 코드가 확인이 안되는데 어디서 소스코드를 얻을 수 있는건가요 ? 아니면 뒤에서 같이 개발을 하는건가요 ? 완성본 소스 코드에서도 index.html 에서 해당 ui 코드 확인이 안되어서 물어봅니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 섹션 4 기본키 매핑 중 24:56분 identity전략을 사용하고 em.persist을 하고난 뒤, member.getId()했을때 select 쿼리가 왜 안날라가는지에 대해 설명하실 때 JDBC 드라이버 관련된 이야기를 하셨습니다. 근데 em.persist를 하고 난 뒤면, 해당 멤버에 대한 엔티티가 1차 캐시에 이미 저장되어 있기 때문에 JDBC 내부 동작과는 관련없이 select 쿼리가 안나가는 것 아닌가요? DB까지 갈 필요없이 1차 캐시에 존재하니까..?