inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

jpa주문입력이 안됩니다.

미해결

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

주문 입력시 아래와 같은 에러가 조회됩니다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 19, col 33)] with root cause 에러상황: 주문 입력시 화이트 페이지 조회 전체코드: https://drive.google.com/file/d/1xAF2BknQ4Zr6eKmkgAyxDn59q7aXbza8/view?usp=drive_link 아래에서 하라는대로 다 해봤는데 안됩니다. 참고로 order자바,orderservice자바는 강의와 똑같습니다. https://www.inflearn.com/questions/362231/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94-%EC%9D%B4%EB%9F%AC%ED%95%9C-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%AC%EA%B2%8C-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4

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

안녕하세요 질문이 있습니다.

미해결

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

여러 서비스가 Kafka에 메시지를 전달해서 이를 단일 서버에서 저장하는 것은 이해가 갑니다! 그렇다면 조회할 때는 어떤 식으로 흐름이 발생하는건가요? 기존에 어플리케이션이 직접 DB와 커넥션이 되어있는 상태라면 조회문 날리면 그만인데 조회의 경우엔 조회 이벤트가 발생할 때마다 조회 이벤트를 보내면 DB가 카프카에 쿼리를 실행한 결과값을 저장하고, 어플리케이션에서는 또 컨슈머를 만들어서 그값을 가져오는 형태인가요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
도쿤x 토리 댓글 1 좋아요 0 조회수 288

@OneToMany , @ManyToOne 질문 있습니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 JPA 강의를 수강 후 게시판에 이미지 첨부를 구현하기 위해 공부하고 있습니다. 1.Board와 Image는 1:N 관계 2.연관관계 주인은 Board 3.cascade = CascadeType.ALL로 옵션을 주어 부모 엔티티(board)가 영속화될 때, 자식 엔티티(Image)도 함께 영속화되도록 했습니다. 위와 같이 설계를 한뒤 코드를 작성했습니다. 근데, Image와 Board 테이블에 모든 데이터가 다 들어가는데 Image 테이블의 board_id가 계속 null값이 들어갑니다. 이 부분이 잘 이해가 안되는데 원인이 무엇일까요? 코드는 아래와 같습니다 ! @Entity @Getter @Setter @NoArgsConstructor public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") private Long id; @Column(name="title") private String title; @Column(name="content") private String content; @Column(name="writer") private String writer; @Column(name="date") private String date; /* @OneToMany(mappedBy = "board") @Nullable private List<Image> images = new ArrayList<>(); */ @OneToMany(mappedBy = "board",cascade = CascadeType.ALL) private List<Image> images = new ArrayList<>(); @Builder public Board(String writer,String title,String content,String date,List<Image> images){ this.writer=writer; this.title=title; this.content=content; this.date=date; this.images=images; } @Entity @Getter @Setter @NoArgsConstructor public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String fileName; @ManyToOne @JoinColumn(name = "board_id") private Board board; private String url; @Builder public Image(String fileName,String url){ this.fileName=fileName; this.url =url; } } @Service @Transactional @RequiredArgsConstructor public class BoardService { private final BoardRepository boardRepository; LocalDateTime currentTime = LocalDateTime.now(); // 현재 시간을 가져옴 /** * Create */ @Transactional public Long saveBoard(BoardSaveRequest request,List<Image> images){ Board board= Board.builder() .writer(request.writer()) .content(request.content()) .title(request.title()) .date(String.valueOf(currentTime)) .images(images) .build(); board.setImages(images); //cascade = CascadeType.PERSIST : 보드 생성 -> image add boardRepository.save(board); return board.getId(); } @RestController @RequestMapping("/board") @RequiredArgsConstructor @Slf4j public class BoardController { private final BoardService boardService; private final ImageService imageService; /** * 게시글 생성 * @param writer * @param title * @param content * @param images * @return 생성된 게시글 id */ @PostMapping() public ResponseEntity<ApiUtil.ApiSuccessResult<Long>> createBoard( @RequestPart(value="writer") String writer, @RequestPart(value="title") String title, @RequestPart(value="content") String content, @RequestPart(value = "images", required = false) List<MultipartFile> images) throws IOException { BoardSaveRequest boardSaveRequest= BoardSaveRequest.builder() .writer(writer) .content(content) .title(title).build(); List<Image> listImage = imageService.saveImage(images); Long saveId = boardService.saveBoard(boardSaveRequest,listImage); return ResponseEntity.ok().body(ApiUtil.success(HttpStatus.CREATED,saveId)); } @Service @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class ImageService { public List<Image> saveImage(List<MultipartFile> multipartFiles) throws IOException { List<Image> images = new ArrayList<>(); for(MultipartFile m : multipartFiles){ m.transferTo(new File("/Users/parkjihyeon/Desktop/imageFolder/"+m.getOriginalFilename())); Image image= Image.builder() .fileName(m.getOriginalFilename()) .url("/Users/parkjihyeon/Desktop/imageFolder/"+m.getOriginalFilename()) .build(); images.add(image); } return images; } }

  • java
  • jpa
파이팅파이팅 댓글 2 좋아요 0 조회수 289

테스트 시 생성자 주입에 관하여

해결됨

실전! 스프링 데이터 JPA

package com.myproject.jpaboard.web.service; import com.myproject.jpaboard.domain.Post; import com.myproject.jpaboard.web.repository.BoardRepository; import lombok.RequiredArgsConstructor; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Optional; @SpringBootTest @RequiredArgsConstructor class PostServiceTest { private final BoardRepository boardRepository; private final PostService postService; @Test void addViewCount() { Optional<Post> byId = boardRepository.findById(1L); Post post = byId.get(); System.out.println("post.getViewCount() = " + post.getViewCount()); postService.addViewCount(1L); System.out.println("post.getViewCount2() = " + post.getViewCount()); } } 안녕하세요. 개인적으로 배운것들을 따로 테스트중입니다. 위의 코드와 같이 생성자 주입을 하니 boardRepository에 NullPointerException이 발생하였습니다. @Autowired를 이용한 필드 주입으로 코드를 수정해보니 문제가 해결되었습니다. 원인을 추측해보면, 테스트 메서드 실행할 때 주입받을 빈이 초기화되어있지 않기 때문으로 보입니다. 이런 상황이 처음이라 지식 공유자님의 의견을 듣고싶습니다.

  • java
  • spring
  • spring-boot
  • jpa
Jaesang Yoon 댓글 1 좋아요 0 조회수 164

PathVariable이 제대로 인식되지 않는 문제

미해결

코드로 배우는 React 19 with 스프링부트 API서버

본 강의 REST컨트롤러 - 수정/삭제, CORS 설정 시청중에 Putmapping, DeleteMapping 쪽에서 파라미터를 @PathVariable로 받는데, postMan에서 테스트 요청을 보냈을때 파라미터가 전달되지 않습니다. @PathVariable(name="tno") 처럼 name을 명시하니까 제대로 파라미터가 받아지던데요 원래는 name은 생략 가능한게 아닌가요??

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
한세건 댓글 2 좋아요 0 조회수 816

회원가입 테스트 작성시 에러가 발생합니다.

미해결

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원 기능 테스트 강의를 수강하며 회원가입 테스트 예제를 작성하고 실앻해도 계속 에러가 나옵니다. 코드도 모두 동일하게 쳣는데 에러가 뜨니 어떻게해야할지 모르겟습니다. ㅠㅠ 10:53:19.411 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.service.MemberServiceTest]: MemberServiceTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 10:53:19.579 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.service.MemberServiceTest 10:53:19.906 [Test worker] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running 이렇게 에러문구 3개가 뜨는데 뭐가 틀린지 모르겟습니다. 도움주시면 감사하겟습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
이호준 댓글 2 좋아요 0 조회수 627

동적 order by..

미해결

실전! Querydsl

쿼리dsl로 동적인 order by 정렬 처리하는거는 강의에서 안보여주시나요?...ㅠㅠ

  • java
  • jpa
플하 댓글 1 좋아요 0 조회수 396

ModelAttribute 사용유무가 궁금합니다.

미해결

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

public class Order 클래스중 //==생성 메서드==// public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } 위에는 jpa1강 파트이고 아래는 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 상품 등록 처리 파트에서 @ModelAttribute 중 일부입니다. jpa에서는 혹시 @ModelAttribute 이부분을 못쓰나요? 아니면 쓸 쑤는 있는데 주문처럼 생성메서드일때는 안쓰는건가요? // @PostMapping("/add") public String addItemV2(@ModelAttribute("item") Item item, Model model) { itemRepository.save(item); // model.addAttribute("item", item); //자동 추가, 생략 가능 return "basic/item"; }

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

주문입력시 질문입니다.

미해결

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

아래와 같은 에러가 조회됩니다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 19, col 33)] with root cause 에러상황: 주문 입력시 화이트 페이지 조회 전체코드: 아래에서 하라는대로 다 해봤는데 안됩니다. 참고로 order자바,orderservice자바는 강의와 똑같습니다. https://www.inflearn.com/questions/362231/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94-%EC%9D%B4%EB%9F%AC%ED%95%9C-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%AC%EA%B2%8C-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4

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

spring data jpa의 merge() 를 쓰지 말고 persist() 만 쓰라는 걸까요??

미해결

실전! 스프링 데이터 JPA

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의에서 merge 를 쓰지 않는게 좋다고 이야기 해 주셨는데, spring data jpa의 save() 를 실무에서 쓰지 말라는 뜻일까요?? 아니면 쓰되 isNew 로직을 타도록 잘 세팅해두라는 뜻일까요?? 실무에서는 객체 저장 어떻게 하는지 궁금합니다~!

  • java
  • spring
  • spring-boot
  • jpa
88diaspora 댓글 1 좋아요 0 조회수 463

orphanRemoval

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] orphanRemoval 개념을 설명할 때, 부모 엔티티와 자식 엔티티에 대해서 이야기 하셨는데 부모 엔티티와 자식 엔티티를 정하는 기준이 어떻게 되나요? 다대일 개념에서 다쪽이 자식 엔티티이고 일쪽이 부모 엔티티가 되는건가요?

  • java
  • jpa
hongjunehuke 댓글 1 좋아요 0 조회수 161

서비스 메소드 작성 시 질문!

미해결

쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS

안녕하세요 쥬쥬님 서비스에서 메서드를 만들 때 질문 있습니다. A라는 서비스 메소드를 만들 때 로직이 복잡하면 코드가 엄청 길어지면 그 때는 안에 있는 메소드를 B, C 서비스 메소드로 분리해야 할 것 같은데 서비스 메소드를 만들 때 기준이 있나요? 지금 createReview 서비스 메소드를 만들때 restaurantRepository.findById(restaurantId).orElseThrow()를 사용하여 조회 및 검증 작업을 진행하는데 추후에 해당 코드를 그대로 유지하는지, 서비스 메소드로 분리하는지, 스태틱 메서드로 만드는지 기준이 궁금합니다.

  • spring
  • git
  • docker
  • spring-boot
  • jpa
  • github
SHYU 댓글 2 좋아요 0 조회수 417

상품 도메인 요구사항 설계 중 의문점

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 5. 상품 도메인 개발 수강 중 궁금한 점이 있어 글 올립니다! 상품 도메인 비즈니스 요구사항에는 1. 상품 등록 2. 상품 목록 조회 3. 상품 수정 이 있는데 핵심 비즈니스 로직을 정의하는 클래스인 ItemService(상품 서비스 클래스)에서는 오직 1. 상품 등록 2. 상품 목록 조회 로직만 설계하신 것을 알 수 있었습니다. 상품 리포지토리에서 상품 등록 로직(save(Item item))에 if - else 문을 통해 merge()가 3. 상품 수정 기능을 해서 상품 서비스 클래스에서 설계를 안 하신 걸로 봐도 될까요?

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

@Transactional을 붙이는 위치가 궁금합니다. (Service, ServiceImpl..)

해결됨

회원 정보 수정 API를 구현하며 dirty checking을 이용한 회원 정보 update를 사용했습니다. service의 update 메소드를 호출하기 전과 후를 controller단에서 로그를 찍어보니 정보가 잘 변경되는데 DB에는 반영이 되지 않아 애를 먹었습니다. serviceImpl단의 update 메소드에 @Transactional을 붙여서 해결했습니다. 그 전에는 service단의 update 메소드에 @Transactional을 붙였더니 안되더라구요. service단의 메소드에 붙이는 @Transactional와 serviceImpl단의 메소드에 붙이는 @Transactional이 다른 트랜잭션으로 작동하는건지, 그렇다면 어디에 @Transactional을 붙이는게 맞는건지 궁금합니다.

  • springboot
  • jpa
  • @transactional
kn9012 댓글 1 좋아요 0 조회수 433

Entity에 ElementCollection이 두 개 있는 경우

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요! 하나의 엔티티에 @ElementCollection 붙은 필드가 두 개 있는 경우를 시험해 보고 있습니다. @EntityGraph(attributePaths = {"a", "b"}) 이런 식으로 해서 테스트를 돌리면 org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 과 같은 오류가 나는데 ElementCollection 두 개가 있는 경우는 하나의 쿼리로 모두 가져오는 방법은 없나요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
김동영 댓글 1 좋아요 0 조회수 298

강의 내용에서 이해안되는 부분 질문드립니다.

미해결

package jpabook.jpashop.domain; import jakarta.persistence.*; import jdk.jshell.Snippet; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Delivery delivery; //배송정보 private LocalDateTime orderDate; //주문시간 @Enumerated(EnumType.STRING) private OrderStatus status; //주문상태 [ORDER, CANCEL] //이 연관관계 부분입니다. //==연관관계 메서드==// public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } //==연관관계 메서드==// public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } 이 연관관계 메서드 부분이 이해가 안되어서 질문드립니다. setMember 메소드에서 member.getOrders().add(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다. addOrderItem 메소드에서 orderItems.add(orderItem); 와 orderItem.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다. setDelivery 메소드에서 delivery.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.

  • 김영한강사님
  • 스프링
  • spring
  • jpa
  • 강의
  • 질문
  • 연관관계메서드
whdk333 댓글 1 좋아요 0 조회수 228

강의 내용 질문드립니다.

미해결

package jpabook.jpashop.domain.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceUnit; import jpabook.jpashop.domain.Member; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import java.util.List; @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List<Member> findAll() { // 회원 목록 조회 return em.createQuery("select m from Member m", Member.class) ry .getResultList(); } public List<Member> findByName(String name) { return em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); } } 위의 코드에서 findByName메소드에서 왜 단건조회가 아닌 리스트 조회를 사용한건가요? 어차피 중복가입은 안되고 이름으로 조회하니까 하나의 결과가 나와야하는거 아닌가요? findByName 메소드에서 setParameter은 왜 있는건가요? 설명부탁드릴게요.

  • 김영한강사님
  • 엔티티
  • 강의
  • 질문
  • 스프링
  • spring
  • jpa
whdk333 댓글 1 좋아요 0 조회수 154

세타조인 크로스조인

미해결

실전! Querydsl

[질문 내용] 세타조인과 크로스조인의 차이가 무엇인가요 ??

  • java
  • jpa
해톨 댓글 1 좋아요 0 조회수 966

unexpectedRollbackException 에러가 로그에 다르게 남겨져요

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 1분 51초 부근에 테스트를 할시에 unexpectedRollbackException이 에러에 남겨지는 것을 확인할 수 있는데, 로그가 저는 다르게 남겨집니다. 2024-04-25T15:46:38.354+09:00 DEBUG 5056 --- [springdx] [ main] cResourceLocalTransactionCoordinatorImpl : JDBC transaction marked for rollback-only (exception provided for stack trace) java.lang.Exception: exception just for purpose of providing stack trace at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.markRollbackOnly(JdbcResourceLocalTransactionCoordinatorImpl.java:310) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.transaction.internal.TransactionImpl.markRollbackOnly(TransactionImpl.java:203) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.transaction.internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:224) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] 다른 테스트도 몇개 그렇게 표시 되는데 recoverException_fail test 시에 위와 같이 에러표시가 됩니다. 테스트 시 통과는 돼서 UnexpectedRollbackException가 터지는 건 맞는 것 같은데 로그에 에러가 그냥 Exception으로 표시가 되는 것 같아서 구글링해봤는데 문제가 무엇인지 모르겠어서 질문드립니다. https://drive.google.com/file/d/1UzxlCeILcMUkroixUZmV2W49LfPqQAnb/view?usp=sharing

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
pink102557 댓글 1 좋아요 0 조회수 637

벌크 연산 질문

미해결

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

-- 단건 삭제 recruitRepository.delete(recruit); -- 벌크 삭제 recruitSkillRepository.deleteRecruitSkills(recruitId); recruitPositionRepository.deleteRecruitPositions(recruitId); Q1. 단건 삭제 이후에 벌크 연산을 하면 delete가 실행이 안되는데 이유가 뭔가요? 제가 생각해본 건 벌크 연산이 실행되면서 영속성 컨텍스트를 초기화하기 때문에 커밋 시점에 이전에 조회한 recruit이 사라졌기 때문이라고 생각하는데 맞을까요?? Q2. 벌크 연산을 먼저 수행하는 경우에는 단건 삭제도 정상적으로 처리됩니다. 단, 이때 select recruit 쿼리가 한 번 더 실행되는데 영속성 컨텍스트에 recruit 데이터가 없기 때문에 다시 조회를 해오는걸까요?? 그럼 이런 경우에는 영속성 컨텍스트를 초기화할 필요가 없을까요?? ps. 현재는 clearAutomatically 속성의 기본값이 false입니다! @Modifying(clearAutomatically = true) 위처럼 속성을 true로 설정해야 영속성 컨텍스트가 초기화 되네요 프로젝트 하다가 간만에 막혀서 보러 왔는데 진짜 국밥강의네요..

  • java
  • jpa
나 좀 도와줘요 댓글 1 좋아요 0 조회수 293

인기 태그

인프런 TOP Writers

주간 인기글