inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

테스트 코드 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading 오류 발생합니다 Long orderId 값이 null 값이여서 오류가 납니다. 왜 null값이 들어가는지 이해가 안됩니다. class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ Member member=new Member(); member.setName("회원1"); member.setAddress(new Address("서울","강가","123-123")); em.persist(member); Book book=new Book(); book.setName("시골 JPA"); book.setPrice(10000); book.setStockQuantity(10); em.persist(book); int orderCount=2; Long orderId = orderService.order(member.getId(), book.getId(), orderCount); Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER,getOrder.getStatus()); } @Test public void 주문취소() throws Exception{ } @Test public void 상품주문_재고수량초과() throws Exception{ } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
강용규 댓글 2 좋아요 0 조회수 1375

Projections.fields 관련 질문입니다.

미해결

실전! Querydsl

Projections을 이용한 조회 테스트를 하고 있던중 Projections.fields에 대해 궁금한점이 있습니다. Dto에 @AllArgsConstructor만 적용하고 Projections.fields를 사용하게 되면 해당 인스턴스를 만들지 못한다고 exception이 발생합니다. 영한님께서 강의에서 말쓴하신 Projections.fields의 특성은 getter, setter가 필요가 없고 생성자 또한 필요가 없다라고 하셨는데 이상하게 @AllArgsConstructor를 추가하면 exception이 발생합니다. ex @Getter @AllArgsConstructor public class ArticleFieldsDto{ private Long id; private String title; private LocalDateTime lastModifiedDate; private Long lastModifiedBy; } 예외 로그 com.querydsl.core.types.ExpressionException: com.mylaboratory.jpa_and_querydsl.projections.dto.ArticleFieldsDto at com.querydsl.core.types.QBean.newInstance(QBean.java:246) at com.querydsl.core.support.NumberConversions.newInstance(NumberConversions.java:86) at com.querydsl.jpa.FactoryExpressionTransformer.transformTuple(FactoryExpressionTransformer.java:51) at org.hibernate.sql.results.internal.RowTransformerTupleTransformerAdapter.transformRow(RowTransformerTupleTransformerAdapter.java:30) at org.hibernate.sql.results.internal.StandardRowReader.readRow(StandardRowReader.java:109) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:443) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:166) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:91) at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:113) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:335) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:276) at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:571) at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:363) at org.hibernate.query.sqm.internal.QuerySqmImpl.list(QuerySqmImpl.java:1073) at org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:457) at org.hibernate.query.sqm.internal.QuerySqmImpl.getSingleResult(QuerySqmImpl.java:1103) at com.querydsl.jpa.impl.AbstractJPAQuery.getSingleResult(AbstractJPAQuery.java:214) at com.querydsl.jpa.impl.AbstractJPAQuery.fetchOne(AbstractJPAQuery.java:326) at com.mylaboratory.jpa_and_querydsl.projections.ProjectionsTest.projections_field(ProjectionsTest.java:70) 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.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) 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:156) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) 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.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) 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 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:71) 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: java.lang.InstantiationException: com.mylaboratory.jpa_and_querydsl.projections.dto.ArticleFieldsDto at java.base/java.lang.Class.newInstance(Class.java:639) at com.querydsl.core.types.QBean.create(QBean.java:251) at com.querydsl.core.types.QBean.newInstance(QBean.java:222) ... 91 more Caused by: java.lang.NoSuchMethodException: com.mylaboratory.jpa_and_querydsl.projections.dto.ArticleFieldsDto.<init>() at java.base/java.lang.Class.getConstructor0(Class.java:3585) at java.base/java.lang.Class.newInstance(Class.java:626) ... 93 more 예외가 발생하지 않는 경우는 아래와 같습니다. @NoArgsConstructor, @AllArgsConstructor 모두 사용 @NoArgsConstructor, @AllArgsConstructor 모두 사용 X @NoArgsConstructor 만 사용

  • java
  • jpa
조윤호 댓글 1 좋아요 0 조회수 1117

테이블 생성 안됨

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티와 테이블 생성 코드 모두 작성하고 실행을 했는데 테이블 생성이 안됩니다.. https://drive.google.com/drive/u/1/my-drive 여기에 압축 파일 올렸습니다. 확인해봐주시면 감사하겠습니다..!

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
coolcool35 댓글 2 좋아요 0 조회수 733

Dto로 매핑을 하는데 오류가 생깁니다.

해결됨

실전! 스프링 데이터 JPA

안녕하세요 강의 잘보고 있습니다. 혼자 공부하면서 이것저것 해보고 있습니다. 다름이 아니라 DB로부터 DTO로 바로 조회를 하고 싶은데 막상 쿼리를 실행하면 적절한 생성자가 존재하지 않는다고 나옵니다. 해당 Dto에 롬복을 이용해서 생성자 어노테이션을 붙여보기도 하고 직접 생성해서 코드를 실행 시켜보기도 하였으나 제대로 동작하지 않습니다. 혹시 한번만 봐주실수 있나요? 환경은 다음과 같습니다. 자바 : 17 스프링부트 : 3.0.2 DB : 마리아DB 파일링크 https://drive.google.com/file/d/1mJ4S-I938BXV7dtyono_uZfSXQxKtE8Q/view?usp=share_link

  • java
  • spring
  • spring-boot
  • jpa
이상민 댓글 1 좋아요 1 조회수 1171

@column 어노테이션 관련하여 질문드립니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요 강사님. 이번 강의에서는 UserLoanHistory 클래스를 @Entity로 사용하는데요, userId, bookName 등 변수에 @column 어노테이션을 붙이지 않은 것을 확인할 수 있었습니다. 저번에 강사님께서 column 어노테이션이 없으면 변수명과 동일한 db 필드에 매핑된다고 하셨습니다. 이번강의에서 코드가 정상적으로 동작하는데 column 어노테이션이 없을때 자바의 camel case 변수가 db의 snake 형태의 이름으로 자동으로 변환되어 쿼리문이 실행되는 건지 궁금합니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
황인태 댓글 1 좋아요 2 조회수 642

devtools관련

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

devtools 라이브러리 추가 후 Recompile을 통해서 화면이 변경되었는데, 이 프로젝트가 아닌 다른 프로젝트에서도 첫화면이 이프로젝트의 첫화면으로 실해되는데 어떻게 해야하는 건가요??

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kim1234123 댓글 1 좋아요 0 조회수 914

CASCADE

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 강사님 CASCADE 강의를 들으면서 공부 도중 여러가지 테스트를 해보면서 이해가 안되는 부분이 있어서요 제가 이해한 내용으로는 CASCADE를 사용하면 Parent 필드에 있는 children 도 연관관계의 주인의 기능을 할 수 있다고 이해했는데요 위 코드를 실행한 결과 findChild1은 삭제 되지 않고 db에 남아있었습니다. 또한 em.remove(findChild1)을 지우고 list.remove(0)을 넣어도 데이터가 그대로 남아 있었습니다. CASCADE 속성은 ALL으로 사용했습니다. 질문 1 영속성컨텍스트에 child 객체 두개와 children 내부에 child 객체 두개가 있어서 그런건가요? 질문2 그리고 고아객체 강의를 보고 이해가 안되는게 CascadeType.ALL + orphanRemoval=true 을 쓰는 것과 CascadeType.ALL 만 쓰는 것에 차이가 있을까요?

  • java
  • jpa
강민승 댓글 1 좋아요 0 조회수 550

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

미해결

스프링 데이터 JPA

JpaRepository를 상속 받는 인터페이스 정의 @NoRepositoryBean 기본 구현체를 상속 받는 커스텀 구현체 만들기 @EnableJpaRepositories에 설정 repositoryBaseClass 기본 리포지토리를 커스터마이징할 때 위와 같은 방법으로 하라고 알려주셨는데요, 인터페이스에서 JpaRepository를 상속받았는데 구현체에서 SimpleJpaRepository<T, ID>를 상속받는 이유를 모르겠습니다. 구현체가 (JpaRepository를 상속받은)인터페이스를 구현하니까 JpaRepository 기능을 사용할 수 있지 않나? 라고 생각했습니다. 아마 제가 상속과 구현 개념이 제대로 잡혀있지 않아서 그런 것 같습니다. 설명해 주시면 저에게 많은 도움이 될 것 같습니다. 좋은 강의 만들어주셔서 감사합니다!

  • java
  • spring
  • jpa
김정희 댓글 1 좋아요 0 조회수 417

yml설정 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] 회원 목록 조회 강의수강중입니다. 어플리케이션을 재시작 할때마다 DB에 테이블이 재생성이 되면서 기존 데이터가 사라집니다. yml에 ddl-auto : create설정 때문인 것 같은데, none, 이나 update로 설정하면 테이블의 재생성은 방지가 되는데, 최초 구동 시 JPA가 테이블을 생성하는것도 막히는건지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
하리보 댓글 1 좋아요 1 조회수 408

오류가 뜨는데 어떡게 해결해야 하는지 모르겠어요...

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 코드도 pdf에 있는 거 복붙해서 똑같이 따라하고 있는데 오류가 나서요 ㅜㅜ h2 DB도 같이 실행해서 하고 있는 중이에요..😥

  • java
  • jpa
새싹 댓글 1 좋아요 2 조회수 1064

테스트 코드 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading 오류 발생합니다 코드: package jpabook.jpashop.service; import jpabook.jpashop.domain.Address; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.Order; import jpabook.jpashop.domain.OrderStatus; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.repository.OrderRepository; import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ Member member=new Member(); member.setName("회원1"); member.setAddress(new Address("서울","강가","123-123")); em.persist(member); Book book=new Book(); book.setName("시골 JPA"); book.setPrice(10000); book.setStockQuantity(10); System.out.println(book.getId()); em.persist(book); int orderCount=2; Long orderId = orderService.order(member.getId(), book.getId(), orderCount); Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER,getOrder.getStatus()); } @Test public void 주문취소() throws Exception{ } @Test public void 상품주문_재고수량초과() throws Exception{ } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 809

logging

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

로깅에서 이거 자체가 안 나오는데 무엇 때문일까요? 전 이렇게만 나옵니다ㅜㅜ yml 복붙했는데도 안됩니다ㅜ

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
coolcool35 댓글 1 좋아요 0 조회수 601

일대다 연관관계 referenceColumnName 질문

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) 안녕하세요. 다름이 아니라 @JoinColumn 에서는 name 속성으로 외래키 컬럼의 컬럼명을 지정하고, 생략된 referenceColumName 속성을 통해 해당 외래키가 대상 테이블의 어떤 컬럼과 연결되는지 정하는 것으로 알고 있습니다. @OneToMany @JoinColumn(name = "TEAM_ID") private List<Member> members = new ArrayList<>(); 그런데 일대다 연관관계에서 다음과 같이 일 쪽에서 joinColumn을 넣어줄 경우 referenceColumnName 속성은 디폴트 값으로 어떤 컬럼과 연결되는지 궁금합니다. 영한 선생님의 답변글에서는 디폴트 값으로 해당 필드의 타입을 확인하고 해당 타입의 pk컬럼과 연결시켜준다고 봤는데 위 경우는 List가 나와서 어떻게 되는지 궁금합니다.

  • java
  • jpa
hw h 댓글 1 좋아요 0 조회수 390

객체 연관관계를 선택적으로 사용할 수 있는 방법은 없을까요?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] member 을 조회할때 team 을 같이 조회하는 경우와 member 만 조회하는 경우 선택적으로 유연하게 사용가능한 방법이 있을까요? member 목록만 심플하게 사용하고 싶은 경우가 있을것 같은데, 굳이 team 정보가 필요하지 않는 경우에는 불필요하게 조회가 일어날 수 있을것 같아서요 이런경우에는 어떻게 사용하면 좋을지 궁금합니다.

  • JPA
  • java
수달달 댓글 1 좋아요 0 조회수 448

엔티티 컬럼의 CamelCase 를 SnakeCase로 매핑해주는 옵션 확인

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

엔티티내에 컬럼 CamelCase 를 SnakeCase 로 변환해 쿼리하는 옵션이 이거인가요? spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

  • JPA
  • java
수달달 댓글 1 좋아요 0 조회수 749

h2로 테이블 생성이 안됩니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

모든 클래스에 entity를 넣은 것은 확인했고요 ㄴh2도 켜져있는 거 확인했습니다. 스프링부트는 3.0.3버전 h2는 2.1.214버전을 사용하고 있습니다. entity도 저렇게 diagram으로 잘 나오는 것을 확인했습니다. application.properties는 다음 사진과 같이 설정해뒀습니다. build파일에 classes에 entity들도 잘 들어가 있고 실행하는데는 에러가 안납니다. 실행시키고 h2에 들어가보면 테이블이 생성이 안돼있고 스프링부트 로그에도 테이블 생성 쿼리가 안보입니다. 뭐가 문제일까요?

  • JPA
  • spring-boot
  • spring
  • java
  • 웹앱
새벽형개발자 댓글 1 좋아요 0 조회수 969

application.yml args에러발생이유

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의 잘 듣고있습니다~ 실습으로 따라하면서 하고있는데 application.yml에서 에러가 발생하는데 왜 그런것일까요??

  • architecture
  • JPA
  • spring-boot
  • spring-cloud
  • Kafka
  • msa
^__^ 댓글 1 좋아요 3 조회수 725

버전질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

스프링 부트가 현재는 2.7.X 버전 밖에 없어서 그걸로 다운받았는데, 버전이 달라서 인지, junit4를 위해 를 추가하면 자꾸 에러가 납니다. 어떻게 해결해야 하나요? ++ 위 코드를 넣지 않았는데 라이브러리에 이렇게 뜨는데 그럼 junit4를 사용할 수 있는 상태인 건가요?~

  • 웹앱
  • java
  • spring-boot
  • JPA
  • spring
coolcool35 댓글 2 좋아요 0 조회수 1430

22:05초 실행 관련 질문이 있습니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) 22:05초 부분을 보면 Lazy 옵션으로 바꾸고 실행을 해보면 em.find() 로 team 클래스를 찾아보지 않았음에도 team 엔티티에 select 쿼리가 나가는데 왜 해당 쿼리가 발생하는지 궁금합니다. Team findTeam = findMember.getTeam() 을 통해 해당 Team 객체를 얻었으니까 select 쿼리가 나갈 필요가 없는 것 아닌가요? 아니면 Team findTeam = findMember.getTeam()을 통해 얻은 해당 Team 객체는 조인을 통해 Id 값만 가지고 있는 비어있는 객체라 select 쿼리가 추가적으로 나가서 해당 객체의 필드값을 채워줘야하는 상태인가요? 만약 이게 맞다면 DB에 외래키가 저장될때는 Id값만 저장하고 다른 값들(name 필드 등등)은 다 날려버리고 저장하게 되는건지 궁금합니다.

  • java
  • JPA
hw h 댓글 1 좋아요 0 조회수 397

스프링 부트 버전에 대한 질문입니다.

미해결

실전! 스프링 데이터 JPA

학습을 하면서 개인 프로젝트를 진행하려 프로젝트를 생성하였습니다. 다음 코드는 프로젝트 설정입니다. plugins { id 'java' id 'org.springframework.boot' version '3.0.3' id 'io.spring.dependency-management' version '1.1.0' } group = 'project' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" // // 쿼리 파라미터 로그 // implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } spring: datasource: url: jdbc:h2:tcp://localhost/~/healthcommunity username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug # org.hibernate.type: trace 다음은 애플리케이션 코드입니다. package project.healthcommunity; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HealthCommunityApplication { public static void main(String[] args) { SpringApplication.run(HealthCommunityApplication.class, args); } } package project.healthcommunity.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello"; } } 위와같이 스프링 빈에 정상 등록되는지 테스트 해보았습니다. 8080포트 로 접속하면 정상적으로 오류 페이지가 떴습니다. 하지만 8080/hello 로 접속해도 404오류가 발생하였습니다. 한참을 구글링 했지만 해답을 찾지 못했습니다. 그러다 스프링 부트의 버전을 3.0.3에서 3.00으로 바꾸어 보았더니 스프링 빈에 정상적으로 등록되어 조회되는것을 볼수 있었습니다. plugins { id 'java' id 'org.springframework.boot' version '3.0.0' id 'io.spring.dependency-management' version '1.1.0' } group = 'project' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" // // 쿼리 파라미터 로그 // implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } 단순히 build.gradle에서 스프링 부트의 버전을 바꾸어주었는데 정상 작동하였습니다. 3.03에서는 컴포넌트 스캔이 정상적으로 작동하려면 어떻게 해야하는지 궁금합니다! 3.03에서는 설정이 변경된 것인가요?

  • java
  • JPA
  • spring
  • spring-boot
양지웅 댓글 1 좋아요 1 조회수 788

인기 태그

인프런 TOP Writers

주간 인기글