30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문내역 @GetMapping Parsing error 관련 질문 드립니다
회원 등록 -> 상품 등록 -> 주문하기 에서 주문 완료시 에러가 발생합니다에러 메시지는 html 파싱 에러 라고 나오는데, 경로는 이상이 없는것 같아서 질문 드려봅니다 OrderController@Controller @RequiredArgsConstructor public class OrderController { private final OrderService orderService; private final MemberService memberService; private final ItemService itemService; @GetMapping("/order") public String createForm(Model model) { List<Member> members = memberService.findMembers(); List<Item> items = itemService.findItem(); model.addAttribute("members", members); model.addAttribute("items", items); return "order/orderForm"; } @PostMapping("/order") public String order(@RequestParam("memberId") Long memberId, @RequestParam("itemId") Long itemId, @RequestParam("count") int count) { orderService.order(memberId, itemId, count); return "redirect:/orders"; } @GetMapping("/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; } } `html 경로`콘솔 에러 메시지rg.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]브라우져 에러 메시지
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ModelAttribute 어노테이션 관련 질문드립니다
코드를 보면, orderSearch 를 매개변수로 받아와서 List (orders)로 만든 후 model 을 이용해 html 에 전달하는것으로 이해 하였습니다.그런데 여기서 @ModelAttribute 의 역할이 이해되지 않습니다. 이 어노테이션을 쓰지 않으면 데이터가 model을 통해 넘어가지 않는것일까요? @GetMapping("/orders") public void orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); }
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Valid
궁금한게 지금 코드에서는 "회원 이름은 필수입니다."라고 딱 1개만 해놨는데 도시 거리 우편번호도 에러메세지를 만들고나서 submit 버튼을 누르면 동시에 4개 에러메시지가 뜹니다. 혹시 순차적으로 뜨게 하는 방법은 따로 없는건가요? 예를 들면 4개다 에러메세지 보유중인데 회원이름을 입력안하고 제출버튼 클릭시 회원 에러메세지만 나오고 나머지 에러메시지는 안나오게 끔 하는 방법이 있나요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
기본키 매핑
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님께서는 @GeneratedValue의 속성값을 auto로 설정해서 h2 데이터베이스에 맞는 기본키전략, 즉 시퀀스 전략을 사용했습니다. 하지만 저는 Identity 전략으로 사용이 되는데 무슨 이유일까요? auto로 해도 Identity 전략, @GeneratedValue의 속성값을 시퀀스로 설정해도 Identity전략으로 됩니다.
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem이 item의 id(pk)를 fk를 가지는 방식으로 매핑할때 문제점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Order, Item이 있고. Order와 Item사이의 다대다 관계를 풀기 위해서 OrderItem이 존재합니다.이때, OrderItem은 Order의 pk와 Item의 pk를 갖습니다. 위와 같은 상황에서. OrderItem에 들어가있는 Item을 삭제하려고 하면. 삭제를 할 수 없다는 문제점이 발생할 것 같습니다. Item을 삭제하면. 과거주문내역(즉, OrderItem)을 조회했을때 Item이 다 null로 나오겠죠. 애초에 참조무결성이 깨지기 때문에 삭제가 안될지도 모르겠습니다. 또는, Item을 삭제할때 연관되어있는 모든 OrderItem역시 같이 지워야 한다거나요.게다가, 이는 비즈니스 정책에 따라 다르겠지만. item의 이름을 변경할 경우. 과거 모든 주문내역에서 item의 이름이 변경된다는 단점도 있습니다. 클라이언트가 이를 원할 수 도 있겠으나. 개인적으로는 이미 판매한 주문내역의 item 이름이 변경되는것은 어색하다고 생각합니다. 저의 질문은. 실무에서, 현장에서는 Order와 Item사이의 연관관계를 어떻게 처리하고 있는지 궁금합니다. 어떻게 처리하는지에 따라 delete와 update의 작동 방식이 달라진다고 생각하기 때문입니다. 저 스스로 생각해본 방식으로는 두가지가 있습니다.첫번째는, OrderItem에서 Item Long id(pk)가 아닌 Item의 String name을 들고 있는 것 입니다. 이 경우. Item이 삭제되어도, name으로 itemRepository.findByName(name)를 이용해 데이터를 조회합니다. 하지만 name으로 entity를 식별해야하므로. name이 유니크해야하며. name이 같으면 동일한 entity로 보기때문에, 한번 삭제했다가 같은이름으로 다시 item을 만들경우 이 둘을 동일하게 취급한다는 문제점이 있을것 같습니다. update관점에서는, item Long id(pk)가 아닌 item의 name을 들고있기 때문에. item을 업데이트 하더라도, 과거 주문내역의 item들의 이름이 바뀌지 않을 것입니다.두번째는, 삭제를 하지 않는 것입니다. 대신 pseudo삭제를 구현합니다. entity에 Boolean enable;과 같은 필드를 만들고. 이 필드값의 T/F 여부에 따라 pseudo삭제되었는지 아닌지 판별합니다. item의 name이 같은 List<Item>에서 최대 하나의 item만 enable true상태를 갖도록 합니다. 이렇게 했을경우 각 OrderItem(주문내역)은 각각 다른 item과 pk로 매핑되어 있기 때문에, 가장 최신에 사용하고 있는(enable=true)인 item을 업데이트하더라도 과거 주문내역에 영향을 끼치지 않습니다. 또한 실제로 db에서 데이터를 삭제하는 것이 아니기 때문에. 과거 내역을 조회할때 item = null인 상황도 발생하지 않을 것입니다. 단, db에 delete를 날리지 않으니 데이터가 계속 쌓인다는 단점이 있을것 같습니다. 위의 두가지 방법은 그저 재가 생각해본 방법에 불과하고. 올바른 방법이 있다면 알려주세요. 부탁드립니다 선생님.질문이 장황하고 굉장히 길었습니다. 읽어주셔서 너무나 감사합니다.
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다대다 관계
다대다 관계에서 ManyToMany애노테이션으로 설정해주었을 때 이 관계의 주인 쪽에 연간관계 메서드를 작성해야 하나요??정리하자면 다대다 관계일 때 일대다, 다대일로 각각 설정하지 않고 강의에서 설명하신 것처럼 ManyToMany로 설정했을 때 이 관계에 대해서도 연관관계 편의 메서드를 작성해야 하는지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
EntityManager의 beans를 찾을 수 없다고 나오는 이유?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 테스트 코드 작성할 때 테스트는 성공하지만, em에 빨간줄이 나오는데 그 이유가 궁금합니다.Could not autowire. No beans of 'EntityManager' type found.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.repository.OrderRepository; import org.junit.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.assertEquals; @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ //given 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; //when Long orderId = orderService.order(member.getId(), book.getId(), orderCount); //then Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER, getOrder.getStatus()); }
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Assertions
김영한 강사님의 수업 pdf파일로 공부하던 중에 궁금한게 생겼습니다. assertj의 assertions와 jupiter의 assertions를 번갈아 가면서 쓰시던데 단지 기능에 따라서 쓰시는 건가요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
야생형 코스에대해 질문있습니다
제가 지금 야생형 코스로 강의를 듣고있는데 다른 로드맵에는 스프링 mvc나 스프링db 같은 따로 상세하게 설명해주는 강의도 있더라고요. 혹시 야생형 코스를 듣는다면 저런 상세한 강의는 건너띄우고 로드맵대로 진행해도 되는건가요 아니면 저 강의들도 들는게 좋은가요.
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
junit5
개인 프로젝트 하면서 junit5로 테스트 했는데 뭔가 콘솔부분이 지저분하고 다소 이상하게 나오는데 문제가 있는걸까요?(테스트는 정상적으로 성공했습니다.)
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
joinColumn, referencedColumnName
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예![질문 내용]JPA 기본키를 생성할 때 향후 비즈니스 모델이 변경될 것을 대비해서 비즈니스에 의존적이지 않은 대리 키(ex. Index) 를 사용해서 관리를 한다고 들었습니다.그런데 예를 들어서 학생과 학교라는 테이블이 있고학생이 ManyToOne이라고 할때 School을 조인해서 외래키를 가지게 될텐데, 실제로 JoinColumn을 통해서 매핑을 하게되면 실제 DB에 값을 확인했을 때 외래키에 값에는 당연히 해당 인덱스 값이 저장이 되게되고, 나중에 학생 테이블의 데이터를 확인할 때 이 인덱스가 어떤 학교의 이름이었지? 하고 확인을 두 번 해야되는 경우가 있어서 학교 이름을 unique로 설정하고 referencedColumnName으로 해당 학교이름을 가져오는 식으로 구성하면 한 번에 보여서 이렇게 하는게 더 좋은건가? 싶더라구요. 그래서 보통 실제로는 어떻게 하는지 궁금해서 여쭤봅니다!
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
9분54초쯤
9분54초쯤 erd보면 item에서 category_item을 일대다로 보고있는데 여기서 아이템은 무조건 카테고리가 필수아닌가요? 그러면 optionality대신 mandatory가 들어가야 하는거 아닌가요? 카테고리가 없는 상품이 없지 않나요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Getter,Setter에러
lombok 플러긴에서 인스톨했습니다!package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name="member_id") private Long id; private String username; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); } package jpabook.jpashop.service; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly= true) @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; /* 회원가입 */ @Transactional public Long join(Member member) { validateDuplicateMember(member);//중복 회원 검증 memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { //Exception List<Member> findMembers = memberRepository.findByName(member.getName()); if(!findMembers.isEmpty()) { throw new IllegalAccessException("이미 존재하는 회원입니다."); } } /* 전체회원조회 */ public List<Member> findMembers() { return memberRepository.findAll(); } public Member findOne(Long memberId) { return memberRepository.findOne(memberId); } }
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
fail() 메소드 컴파일 에러 관련 질문드립니다
fail() 메소드 매개변수로 메시지 작성시 컴파일 에러가 발생합니다. 어떤 이유에서일까요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실전 스프링부트 활용 1 Order 질문입니다.
안녕하세요 연관관계 주인과 메서드 관련 질문입니다. Member와 Order 엔티티에서의 연관관계의 주인은 Order에 있으므로setMember를 하는것으로 이해 했습니다. 그런데 Order와 OrderItems에서의 연관관계의 주인은 OrderItem에 있지 않나요?연관관계 주인인 OrderItems에서 Order를 관리하는 메서드를 추가 해야 하는것 같은데 OrderItem에는 FK인 Item과 Order를 관리하는 메서드가 없고 addOrderItem이 Order에 있어서 질문 글 올립니다.. addOrderItem을 편의상 Order에서 하는것인지 아니면 연과관계 주인인 OrderItem에서 하는게 맞는지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@RequestMapping에 대해 궁금한 점이 있습니다
질문이 있습니다. 다름이 아니라 이 강의에서는HomeController에 @RequestMapping을 쓰셨는데다른 질문 글을 보니 @GetMapping이 더 적절하다고 하셔서 질문이 생겨서 물어봅니다.찾아보니 @Get, Post, Delete, Put등등 + Mapping들이 스프링 4.3부터 추가된 어노테이션이라고 하고, 기존에는 GET, POST등 명확한 목적이 있을시에는 @RequestMapping(value = "경로", method = {RequestMethod.GET})이런 식으로 작성했다고 하는데Q-1. 그렇다면 실무에서는 @GetMapping, @PostMapping 등을 @RequestMapping대신 많이 사용하는지가 궁금하고Q-2. 만약 1번 질문이 맞다면 실무에서 기본의 오래된 코드말고 최근 짜여진 코드일 경우 @RequestMapping을 사용을 거의 하지 않는지 궁금해서 질문을 드립니다!!!
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 개발2 에러
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order] Cause: cannot assign instance of java.lang.StackTraceElement to field java.lang.StackTraceElement.moduleVersion of type java.lang.String in instance of java.lang.StackTraceElement > Task :JpashopApplication.main() . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.1)2022-10-05 16:31:17.754 INFO 167604 --- [ main] jpabook.jpashop.JpashopApplication : Starting JpashopApplication using Java 11.0.17 on DESKTOP-IT7I8VG with PID 167604 (C:\study\jpashop\build\classes\java\main started by User in C:\study\jpashop)2022-10-05 16:31:17.758 INFO 167604 --- [ main] jpabook.jpashop.JpashopApplication : No active profile set, falling back to default profiles: default2022-10-05 16:31:18.333 INFO 167604 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2022-10-05 16:31:18.347 INFO 167604 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 6 ms. Found 0 JPA repository interfaces.2022-10-05 16:31:18.933 INFO 167604 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2022-10-05 16:31:18.942 INFO 167604 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2022-10-05 16:31:18.943 INFO 167604 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.41]2022-10-05 16:31:19.031 INFO 167604 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2022-10-05 16:31:19.031 INFO 167604 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1236 ms2022-10-05 16:31:19.161 INFO 167604 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2022-10-05 16:31:19.214 INFO 167604 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.25.Final2022-10-05 16:31:19.333 INFO 167604 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}2022-10-05 16:31:19.438 INFO 167604 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2022-10-05 16:31:19.494 INFO 167604 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2022-10-05 16:31:19.527 INFO 167604 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect2022-10-05 16:31:19.717 ERROR 167604 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order]2022-10-05 16:31:19.717 WARN 167604 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order]2022-10-05 16:31:19.717 INFO 167604 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2022-10-05 16:31:19.721 INFO 167604 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.2022-10-05 16:31:19.724 INFO 167604 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2022-10-05 16:31:19.732 INFO 167604 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2022-10-05 16:31:19.749 ERROR 167604 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298) ~[spring-boot-2.4.1.jar:2.4.1] at jpabook.jpashop.JpashopApplication.main(JpashopApplication.java:10) ~[main/:na]Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order] at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1332) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:870) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:795) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:53) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1661) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.2.jar:5.3.2] ... 17 common frames omittedCaused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.Member.orders[javax.persistence.criteria.Order]> Task :JpashopApplication.main() FAILEDExecution failed for task ':JpashopApplication.main()'.> Process 'command 'C:/Users/User/.jdks/semeru-11.0.17/bin/java.exe'' finished with non-zero exit value 1* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 코드 완성했는데 에러 너무 심하네요 ㅠh2데이터 베이스 실행했습니다.
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트
쇼핑몰 프로젝트를 구현하려고 하는데 다른 사람들꺼 보니까 쇼핑몰 이미지를 쓰는거 같던데 비상업용이니까 그렇게 해도 상관 없나요?? 구글에 찾아봐도 두루뭉실하게 나와서 질문드립니다
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문과 아이템
실제로 erd짤때 주문과 아이템을 다대다에서 일대다 다대일 이렇게 짜야하는 건가요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepository 에러
package jpabook.jpashop; import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; import org.assertj.core.api.Assertions; import org.junit.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; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test public void testMember() throws Exception{ Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } } 에러코드 Cause: cannot assign instance of java.lang.StackTraceElement to field java.lang.StackTraceElement.moduleVersion of type java.lang.String in instance of java.lang.StackTraceElement 멤버 package jpabook.jpashop; import lombok.Getter; import lombok.Setter; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String username; } 멤버리포지토리 package jpabook.jpashop; import jpabook.jpashop.Member; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; public class MemberRepository { @PersistenceContext EntityManager em; public Long save(Member member) { em.persist(member); return member.getId(); } public Member find(Long id) { return em.find(Member.class, id); } } yml spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop 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 h2 데이터베이스