묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.yml, properties 설정 문서
application.yml이나 properties에 적는 설정 정보? 들을어디서 찾아볼 수 있을까요...공식 문서를 찾아보는데 확인이 잘 안 됩니다.logging.level.org.hibernate.SQL = debug 특히 이 부분같은 경우 어디있는지 모르겠어요
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
moveToList() 함수 코드 에러입니다.
button onClick () => moveToList()호출 시 파라미터가 없기 때문에if 절 타지 않고(undefined)else로 빠지는데, 동작이 잘 되는 이유는moveToList() 함수 밖에서 선언한const queryDefault = createSearchParams({ page, size }).toString();덕분에 동작이 잘 되는것입니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
섹션15 인가 DB 연동부분
안녕하세요 강사님,강의를 수강중인 수강생입니다.궁금한 사항이 있어 질문드립니다.PersistentUrlRoleMapper의 getUrlRoleMapping를 확인해보면 결국 urlRoleMappings 변수의 key value부분이SecurityFilterChain의 requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")이 되는것 같습니다.예를들어 컨트롤러 쪽 api 호출시/admin/select 는 ROLE_MANAGER, ROLE_ADMIN 접근 가능하며/admin/insert ROLE_ADMIN만 호출을 허락하려고하면 JPA나 쿼리를 수정해서 urlRoleMappings 에 매핑하면 될지 궁금하여 질문드립니다.현재 업무중의 테이블이 Role 과 Menu가 있고,Role과 Function이라는 테이블이 있어서,Menu접근에 권한과 Menu하위에 기능별로 다르게 권한을 동적으로 주려고하다보니 해당부분을 수정하면 될것 같아서 질문을 드립니다. public class PersistentUrlRoleMapper implements UrlRoleMapper{ public PersistentUrlRoleMapper(ResourcesRepository resourcesRepository) { this.resourcesRepository = resourcesRepository; } @Override public Map<String, String> getUrlRoleMappings() { urlRoleMappings.clear(); List<Resources> resourcesList = resourcesRepository.findAllResources(); resourcesList.forEach(re -> { re.getRoleSet().forEach(role -> { urlRoleMappings.put(re.getResourceName(), role.getRoleName()); }); }); return urlRoleMappings; } }
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
제네릭 DTO 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]static class Result<T> {private T data;}위와 같은 Result를 static으로 선언해서 inner class로 여기서는 사용을 하였는데요, 이를 패키지 바깥에 전역적으로 사용할 수 있도록 하나의 클래스로 선언하는 것과 inner class로 사용할 때 어떤 차이가 있을지 궁금합니다.가령, 어떤 Response에서는 count라는 필드가 필요하고, 어떤 Response에서는 message라는 필드가 필요하다고 하면, 전역적으로 Result라는 DTO를 하나의 public 클래스로 만들어둔다면 위 상황을 처리하기 힘들 것 같은데 어떠한 방식이 객체지향적인 방식일까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
jwt 토큰은 api서버에서만 사용하나요?
수업을 듣다가 궁금한 점이 생겨 문의 드립니다. 현재 React를 사용하여 API 서버와 작업할 때는 JWT 토큰을 자주 사용하는데, 타임리프(Thymeleaf)와 같은 서버 사이드 렌더링을 사용할 때도 JWT 토큰을 사용해도 되는지, 혹은 사용하면 안 되는지 궁금합니다!
-
해결됨스프링 배치
선생님 다음 신규강의는 어떤걸 준비중이세요?
시큐리티도 신규강의가 나와서 너무 좋았는데 스프링배치도 신규강의가 나오는지 궁금해서 질문 남깁니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
맞는 의존성 주입
저는 Maven이 아닌 gradle을 사용하고 있습니다 근데 31강에서 오류가 발생했습니다.Maven이 아닌 gradle이라 바꿔서 의존성주입을 하면서 강의를 진행했는데 트러블 슈팅이 되지 않아 올립니다 도와주세요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 실행 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원가입 실행 오류가 있어서 확인해 본결과 Member.java 수정@GeneratedValue(strategy = GenerationType.SEQUENCE) 을 하면 돌아가는데 왜 강의 코드 에서는 에러가 생기나요 ??
-
해결됨견고한 결제 시스템 구축
'더 견고해지기 위해 남은 작업' 아 영상 파트에 나오는 자료 공유 받을수 있나요?
우선 좋은 강의 준비해주셔서 정말 감사드립니다!영상에 나오는 노션 자료 초기 영상에서 공유 해주셨던 노션 링크 통해 확인해보니깐 '더 견고해지기 위해 남은 작업' 이 영상에서 나오는 자료는 안보이는것 같습니다. 제가 못 찾는걸까요? 이부분 공유가 안되었으면 공유 부탁드립니다!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
navigate 사용시 useCallback() 사용 여부가 궁금합니다.
지난 강의에서 LIST, ADD 클릭 할때와 const handleClickList = useCallback(() => { navigate({ pathname: 'list' }); }, []); const handleClickAdd = useCallback(() => { navigate({ pathname: 'add' }); }, []);지금 강의에서 moveToModify 클릭할 때 const moveToModify = () => { navigate({ pathname: `/todo/modify/${tno}`, search: queryStr }); };useCallback() 사용 여부 차이가동적으로 변할 여지가 있는 함수를 새로 호출하는게 맞아서 그런걸까요?(=${tno}의 변경 가능성?)props로 써야할 것과 router로 써야할 것을 구분하라고 하셨습니다. 혹시 이것과 관련된 말씀이셨나요?검색해도 명쾌히 이해가 가지 않습니다!!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 수정 500에러가 뜹니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]상품 수정 하려 했더니 다음과 같은 에러가 뜹니다. 강의 듣고 작성한 코드인데 어떤 부분이 잘못됐는지 알고 싶습니다.package jpabook.jpashop.controller; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.service.ItemService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form) { Book book = new Book(); 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"; } @GetMapping("/items") public String list(Model model) { List<Item> items = itemService.findItems(); model.addAttribute("items", items); return "items/itemList"; } @GetMapping("/items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId); BookForm form = new BookForm(); form.setId(item.getId()); form.setName(form.getName()); form.setPrice(form.getPrice()); form.setStockQuantity(form.getStockQuantity()); form.setAuthor(item.getAuthor()); form.setIsbn(item.getIsbn()); model.addAttribute("form", form); return "items/updateItemForm"; } @PostMapping("/items/{itemId}/edit") public String updateItem(@PathVariable String itemId, @ModelAttribute("form") BookForm form) { 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"; } }package jpabook.jpashop.repository; import jpabook.jpashop.domain.item.Item; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import jakarta.persistence.EntityManager; import java.util.List; @Repository @RequiredArgsConstructor public class ItemRepository { private final EntityManager em; public void save(Item item) { if (item.getId() == null) { em.persist(item); } else { em.merge(item); } } public Item findOne(Long id) { return em.find(Item.class, id); } public List<Item> findAll() { return em.createQuery("select i from Item i", Item.class) .getResultList(); } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle build 에러
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]IDE 에서 정상적으로 작동하는데 git bash에서 빌드할때 버전오류가 납니다 자바 22 사용하고 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
bootstrap 파일이 동기화가 안됩니다..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이런 식으로 화면이 뜨는데 어떻게 하면 좋을 지 여쭙고자 합니다.
-
해결됨실전! 스프링 데이터 JPA
한방쿼리 vs findAll(또는 일부분만 찾은뒤) filter 사이의 성능차이 질문입니다!
안녕하세요 datajpa로 개발을 하다보니 궁금한 점이 생겼습니다.어떤 엔티티에서 특정 조건을 만족하는 엔티티만 찾아야 할 때jpql의 @Query어노테이션이나, queryDsl의 쿼리를 이용해서 where절 조건을 정의하고 찾을 수 있습니다.하지만 꼭 그렇지 않고 findAll 후에 Stream.filter로 찾아도 되긴 합니다. 얼핏 보면 findAll() 이 훨씬 비싸 보이지만"DB비용이 매우 비싸기 때문에 , 오히려 was에서 추가작업(정렬) 등을 하는게 좋을 때가 있다." 라는 걸 본적이 있어서 질문 드립니다.jpa를 쓰는게 확실히 여러가지 면에선 편리한 점이 많지만, 결국 비지니스 로직과 관련된 특정한 조건들을 찾기 위해서라면 쿼리가 세분화 되어 나가야 되는데 그런 상황에서 jpa는 어떤 장점을 가지는지는 잘 모르겠습니다. 읽어주셔서 감사합니다!
-
미해결실전! 스프링 데이터 JPA
count query에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 Spring 강의 열심히 듣고 있습니다.paging 관련해서 듣다가 문득 궁금한 것이 생겨서 질문드립니다.현재까지 배운 Spring data jpa에서는 매번 paging을 요청할 때마다 count 쿼리도 같이 날라가는데요, JPA를 떠나 일반적인 실무 환경에서도 매번 paging 쿼리와 count 쿼리를 같이 날리는지가 궁금합니다.paging 쿼리를 매번 날리면 새로운 게시물이 등록된 경우에 해당 게시물도 paging에 넣어서 계산할 수 있다는 장점은 있는 것 같은데 paging가 바뀔 때마다 count 연산이 수행된다는 것이 큰 오버헤드가 발생할 수도 있다는 생각이 들기도합니다..관련해서 어떻게 구현하는 것이 best pratice에 가까울까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오류 발생
뭐가 문제일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 부분 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85) at jdk.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Suppressed: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85) at jdk.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.afterTestMethod(ResetMocksTestExecutionListener.java:67) at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:487) at org.springframework.test.context.junit.jupiter.SpringExtension.afterEach(SpringExtension.java:278) ... 2 more Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49) at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29) at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26) at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71) at org.mockito.Mockito.<clinit>(Mockito.java:1683) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:105) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ... 15 more Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker.It appears as if your JDK does not supply a working agent attachment mechanism.Java : 17JVM vendor name : Amazon.com Inc.JVM vendor version : 17.0.11+9-LTSJVM name : OpenJDK 64-Bit Server VMJVM version : 17.0.11+9-LTSJVM info : mixed mode, sharingOS name : Windows 11OS version : 10.0 at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260) at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ... 18 more Caused by: java.lang.IllegalArgumentException at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220) at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:177) ... 19 moreCaused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
test.my.db 가 안생깁니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JpashopApplication이 실행되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-06-07T16:07:39.618+09:00 ERROR 30312 --- [ restartedMain] 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]: Collection 'jpabook.jpashop.domain.item.Item.categories' is 'mappedBy' a property named 'items' which does not exist in the target entity 'jpabook.jpashop.domain.Category' at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952) ~[spring-context-6.1.8.jar:6.1.8] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.8.jar:6.1.8] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.0.jar:3.3.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.0.jar:3.3.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.0.jar:3.3.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.0.jar:3.3.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.0.jar:3.3.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.0.jar:3.3.0] at jpabook.jpashop.JpashopApplication.main(JpashopApplication.java:16) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.3.0.jar:3.3.0]Caused by: org.hibernate.AnnotationException: Collection 'jpabook.jpashop.domain.item.Item.categories' is 'mappedBy' a property named 'items' which does not exist in the target entity 'jpabook.jpashop.domain.Category' at org.hibernate.boot.model.internal.CollectionBinder.isReversePropertyInJoin(CollectionBinder.java:1639) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.model.internal.CollectionBinder.noAssociationTable(CollectionBinder.java:1653) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.model.internal.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:1614) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.model.internal.CollectionBinder$1.secondPass(CollectionBinder.java:1605) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.model.internal.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:45) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1811) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1770) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:334) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1431) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1502) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.8.jar:6.1.8] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.8.jar:6.1.8] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.8.jar:6.1.8] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.8.jar:6.1.8] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1835) ~[spring-beans-6.1.8.jar:6.1.8] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-6.1.8.jar:6.1.8] ... 20 common frames omittedProcess finished with exit code 0 다음과 같은 에러가 발생하는데 어떻게 해결해야 할지 여쭙고자 합니다.
-
해결됨실전! 스프링 데이터 JPA
class projection 중 오류발
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용][질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Class projection 중 class MemberClassProjections( private final String memberName; public MemberClassProjections(String memberName) { this.memberName = memberName; } public String getMemberName() { return memberName; })class로 projection을 하면Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository' defined in jpaShop.shop.domain.member.repository.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List jpaShop.shop.domain.member.repository.MemberRepository.findMemberClassProjectionByMemberName(java.lang.String); Reason: Failed to create query for method public abstract java.util.List jpaShop.shop.domain.member.repository.MemberRepository.findMemberClassProjectionByMemberName(java.lang.String); Source must not be null or empty메서드 생성 오류가 표출되는데public record MemberClassProjections(String memberName) {}record로 만들면 오류없이 잘 실행이 됩니다.이유가 뭘까요..