묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade 관계에 대해서 질문이 있습니다..!
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하십니까! 영한님 Casecade를 사용하면서 도저히 이해가 안되는 부분이 있어서 질문 드립니다... 현재 상황 Parent 와 Child가 부모와 자식으로 관계를 갖고 있습니다. Child는 Child를 부모와 자식으로 갖고 있습니다. Parent와 Child @OneToMany관계에 CasecadeType.ALL 과 OrphanRemoval.true를 걸어뒀고 Child와 Child의 @OneToMany에 CasecadeType.ALL 과 OrphanRemoval.true를 걸어뒀습니다. 둘다 Casecade.ALL과 Orphan.Removal.true를 건겁니다... Parent parent = new Parent(); Child child1 = new Child(); Child child2 = new Child(); 이렇게 인스턴스를 생성하고 이때 parent의 자식으로 child1 와 child2 를 넣고 child1의 자식으로 child2를 넣었습니다. 서로 연관관계를 넣어줬고 부모가 자식을 알고 자식도 부모를 압니다. 이때 parent.getChildren().remove(child2)를 하면 delete 쿼리가 나가지 않지만 child1.getChildren().remove(child2)를 하면 delete 쿼리가 나가서 데이터베이스에서 삭제가 되는 것을 확인했습니다...! 어째서 둘 중 하나만 delete 쿼리가 나가는지 궁금한데 도저히 해결 방법을 모르겠습니다 ㅠㅠㅠㅠㅠㅠㅠ 제 예상으로 둘다 Cascade가 걸렸있으니 parent에서도 지우고 child1에서도 지워야 성공적으로 child2가 지워질거 같은데 말이죠,... 혹시 ... child1의 부모가 parent인것과 관련이 있을까요..?? 질문이 정신없어서 죄송합니다 ㅠㅠ
-
해결됨홍정모의 따라하며 배우는 C++
string을 const char*로 바꿀 필요가 있나요?
제목 그대로 필요가 있는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC에서 핸들러 매핑
[질문 내용]안녕하세요 스프링mvc 학습 중 궁금한 점이 생겨 질문 올립니다. 스프링 mvc에서 디스패처 서블릿이 핸들러 매핑할때 @Controller @RequestMapping 이 붙어있는 "클래스"를 찾아서 핸들러로 매핑 한다고 이해 했습니다. 그렇다면 어댑터는 해당 핸들러의 @RequestMapping("[url경로]") 애노테이션이 붙어있는 "메소드"를 실행 시켜주는것인가요?? @RequestMapping 애노테이션이 붙어있는 "메소드"를 컨트롤러라고 부르는건가요..? 만약 클래스 레벨에 @RequestMapping("[url경로]")가 있고 해당 클래스의 메서드가(애노테이션이 붙지않은 순수 자바 메서드) 단 하나뿐이라면 요청이 왔을때에 클래스의 메서드가 실행 되는것일까요??
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
몽고디비 연결 에러
안녕하세요, npm start를 눌러 실행하면 다음과 같은 오류가 뜹니다. 현재 mongo db 5.0.5버전을 사용하고 있습니다. 그 외 모듈의 버전은 실습과 동일하게 설정하였습니다. mongod --auth를 실행한 후 , mongo admin -u root -p 비밀번호를 입력한 후에 제대로 접속이 된 것을 확인하고 npm start를 하였습니다. 인터넷에서 오류를 검색하여 해결하고자 하였으나 해결하지 못하여 글을 올리게 되었습니다.ㅠㅠ 어떻게 해결하면 좋을지 알려주시면 감사하겠습니다.
-
미해결오픈 소스 자바스크립트 React 프로그래밍 입문 Part.1
react 비주얼 스튜디오
여기 보면 client앱이 강사님께 보이는데 처음에 실행할 때 리액트로 설정하는 화면도 없고 clientapp 디렉토리도 없는데 어떻게 하면 되는건가요..
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
V6에서 HOC 사용방법좀 ㅠ
검색해서 나름 해봤지만 잘 모르겠네요 ㅠ 명확하게 알려주실수있을까요 ㅠ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
2번 클릭해야 axios.delete 반응하는 이유
안녕하세요 제로초님 제가 출력 된 것들을 삭제 하는 함수를 만들고 있습니다. 제가 category 값을 map 함수로 출력 해 준 뒤 li value값에 category id 값을 넣어 주었습니다. 값을 제어 할려고 -> useState(categoryId) 만들어 주었습니다. li 태그 onClick 를 하면 ContentDelete 라는 삭제하는 함수가 호출 됩니다. 그리고 e.target.value 을 이용해서 -> categoryId 에 value 값을 넣어주었습니다. 그리고 categoryId 값을 서버에 호출 해 주었습니다. 하지만 Delete li 태그 onClick 를 2번 해야 axios.delete 가 먹힙니다. DELETE http://localhost:3065/api/category/0 404 (Not Found) -> 한 번 클릭 할 경우 useState 초기값인 0이 나옵니다. DELETE http://localhost:3065/api/category/18 404 (Not Found) -> 한 번 더 클릭해야 18이 나오고 404 에러가 나지만 삭제는 됩니다. 왜 이러는 지 모르겠습니다... async await 으로 비동기 처리도 제대로 해 주고 return 문에다가 넣어주었는데 왜 처음 클릭하면 state 초기값인 0이 찍히는 지... const [categoryId, setCategoryId] = useState<number>(0); const ContentDelete = useCallback( async (e) => { setCategoryId(e.target.value); return await axios.delete(`http://localhost:3065/api/category/${categoryId}`, { withCredentials: true, }) }, [categoryId]) return ( <ul> {categorys && categorys.map((test: { id: any, content: React.ReactChild }) => ( <li key={test.id} value={test.id} onClick={ContentDelete}>{test.content} <AiOutlineClose /> </li> ))} </ul> )
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
시퀀스 DROP 전에 과정
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. <property name="hibernate.hbm2ddl.auto" value="create" /> hibernate설정을 위와 같이 create로 했는데도 allocationSize를 50으로 설정 하고 다시 RUN 했을 때,(allocationSize를 1로 세팅한 소스를 먼저 실행 시켰었습니다) 시퀀스 증가값이 1일 때, allocationSize가 1이 아니여서 나타나는 맵핑 오류가 발생합니다. Hibernate: drop sequence if exists MEMBER_SEQ Hibernate: create sequence MEMBER_SEQ start with 1 increment by 1 RUN 콘솔창에 보면 옵셥을 "create"로 했을때, 위와 같이 먼저 DROP한 후에 SEQUECE를 다시 CREATE 합니다. 그런데도 오류가 발생하는 것은 SEQUECE DROP 전에 어떤 확인과정이 있다는 것인데, SEQUECE DROP전에 어떤 과정이 먼저 일어나는지 알 수 있을까요? *** allocationSize를 50으로 설정 해서 발생하는 오류는 이전 질문들을 보고 해결했습니다.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
posts.js get/post 질문
안녕하세요~ fetchPosts 함수의 .get을 사용할때 "/"만 쓰는 경우는 스웨거문서에서 넘겨야할 파라미터가 없을 경우에 "/" 만 넘기는 것인지 궁금합니다. fetchPost(postId)는 fetchPost("/", postId)로 안넘기는 것일까요? // 학습 노트 목록조회 API function fetchPosts() { return posts.get("/"); } //학습 노트 1개를 조회하는 API function fetchPost(postId) { return posts.get(postId) }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
환경 설정을 따로 해야되는 것인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 6분1 6초에 insert에 커서를 올려서 반환값을 설명해주시는데 제가 visual studio에서 따라 치면 다르게 나와서 답답한데 따로 설정해야되는 것이 있는건가요? 그리고,,, 10분 42초에 pair<const int, int>& p = (*it); 에 &이 붙은 이유가 궁금합니다.. 항상 부족한 저에게 잘 가리쳐주셔서 감사합니다!
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
강의자료
안녕하세요!! 일단 좋은 강의 올려주셔서 감사합니다 😊 혹시 강의할때 사용하신 강의자료도 제공해주실수 있나요 ??지금 제공되고있는 강의자료에는 글들이 많이 빠져있어서요 ㅜㅜ
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
styles파일의 분리 문의
안녕하세요? 다음과 같은 props값을 는 경우에 styles 코드만 따로 분리하려 합니다. A.js(다음의 코드) Astyles.js(styled-components 따로 분리하려는 새 파일) isSelected는 어떻게 처리해야하는지, 궁금합니다. import React from 'react' import styled from 'styled-components' const Bar = (props) => { return ( <BarWrapper onClick={props.handleClickBar} isSelected={props.isSelected}> <BarInfo> <Percent>{props.percent}%</Percent> <ItemVaue>{props.itemValue}</ItemVaue> <Count>{props.count}</Count> </BarInfo> <BarGraph width={props.percent} isSelected={props.isSelected}></BarGraph> </BarWrapper> ) } const BarWrapper = styled.div` position: relative; margin-bottom: 3px; padding: 8px 0; background: ${({isSelected}) => isSelected ? '#dddddd' : '#f3f3f3'}; ` const BarInfo = styled.div` width: 100%; display: flex; z-index: 2; position: relative; ` const Percent = styled.span` text-align: right; min-width: 70px; flex: 0 0 auto; ` const ItemVaue = styled.span` padding-left: 60px; flex: 1 1 0%; ` const Count = styled.span` padding-right: 20px; flex: 0 0 auto; ` const BarGraph = styled.div` position: absolute; left: 0; top: 0; width: ${({width}) => width}%; transition: width 1.5s ease; height: 100%; background: ${({isSelected}) => isSelected ? 'rgba(126, 198, 81, 0.7)' : 'rgb(198, 198, 198)'}; z-index: 1; ` export default Bar
-
미해결
angular 네이버 분석스크립트 설치해보신분 조언 구합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 앵귤러에서 네이버 분석 스크립트를 설치하려 하는데 SPA이다 보니 한 페이지로만 인식되서 도저히 읽히지를 않네요. 네이버 측에서도 SPA관해서는 가이드를 따로 주지않네요 ㅠㅠ index.html에 공통 스크립트를 설치했고, 나머지 페이지 이동이 될때 읽히 지가 않네요. 해보신 분 계시면 꿀팁있을까요.
-
미해결구글애즈로 배우는 퍼포먼스마케팅 필수 (2023년 업데이트)
랜딩페이지 자동화 부분 질문
안녕하세요. 강의 잘 보고 있습니다! 입찰전략과 광고소재 파트에서 랜딩페이지 자동화를 소개해주셨는데 혹시 조금 더 설명을 들을 수 있을까요? 제가 궁금한 부분은 -예시에서 보여주신 툴 또는 비슷한 툴이 있는지? -효과적인 사례 등이 궁금합니다! 답변 기다리겠습니다. 감사합니다.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
라이브서버
선생님 안녕하세요 open with live server 클릭시 비주얼스튜디오 화면이 분할되어서 뜨는게 아니라 새 창이 열리는데 어떻게 해결 할 수 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 빈에 대한 질문
안녕하세요. 프로토타입 스코프 강의를 듣던 중 궁금점이 생겨 질문 드립니다. 1. 프로토타입 빈의 필요성에 대한 질문 프로토타입 빈은 스프링 컨테이너에서 요청 시마다 새롭게 생성되어 반환된다고 하였습니다. 그렇다면 굳이 스프링 컨테이너에서 관리할 필요가 있나요? 순수 자바코드로도 충분히 가능한 것 아닐까요? 2. 프로토타입 빈의 "관리"에 대한 질문 스프링 컨테이너에서 빈을 생성, 의존관계 주입만 처리하고 이후 관리하지 않는다고 하였는데, 여기서 말하는 '관리'에 해당하는 내용은 어떤 것들이 있는지(정확히는 빈 종료 외에도 다른 항목이 있는지) 궁금합니다. 또한 스프링 컨테이너가 종료될 때 싱글톤타입 빈과는 달리, 프로토타입 빈은 종료되지 않는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
"org.springframework.http.converter.HttpMessageConversionException: Type definition error 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님, 강의를 진행하는 도중 에러가 발생하여 글 남깁니다. <postman> http://localhost:8080/api/v2/simple-orders <error 메시지> { "timestamp": "2022-01-25T07:53:01.075+00:00", "status": 500, "error": "Internal Server Error", "trace": "org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class jpabook1.jpashop1.api.OrderSimpleApiController$SimpleOrderDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class jpabook1.jpashop1.api.OrderSimpleApiController$SimpleOrderDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:460)\n\tat org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)\n\tat org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:183)\n\tat org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:655)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.base/java.lang.Thread.run(Thread.java:831)\nCaused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class jpabook1.jpashop1.api.OrderSimpleApiController$SimpleOrderDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])\n\tat com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)\n\tat com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300)\n\tat com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:46)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:29)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400)\n\tat com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514)\n\tat com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1007)\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:454)\n\t... 48 more\n", "message": "Type definition error: [simple type, class jpabook1.jpashop1.api.OrderSimpleApiController$SimpleOrderDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class jpabook1.jpashop1.api.OrderSimpleApiController$SimpleOrderDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])", "path": "/api/v2/simple-orders" } <OrderSimpleApiController.java> @RestController@RequiredArgsConstructorpublic class OrderSimpleApiController { private final OrderRepository orderRepository; /** * 주문 조회 */ @GetMapping("/api/v2/simple-orders") public List<SimpleOrderDto> ordersV2() { //Order 테이블 조회 (결과 2개) List<Order> orders = orderRepository.findAllByCriteria(new OrderSearch()); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; } //DTO로 변환 static class SimpleOrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; //생성자 public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); //Member 테이블 조회 orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getMember().getAddress(); //Delivery 테이블 조회 } } //fetch join으로 쿼리 1번 호출 @GetMapping("/api/v3/simple-orders") public List<SimpleOrderDto> orderV3() { List<Order> orders = orderRepository.findAllWithMemberDelivery(); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; }} <Order.java> @Entity@Table(name = "orders")@Getter @Setterpublic class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 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) { this.orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } //생성 메서드 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.setOrderDate(LocalDateTime.now()); order.setStatus(OrderStatus.ORDER); return order; } //비즈니스 로직 (주문 취소) public void cancel() { if(delivery.getStatus() == DeliveryStatus.COMP) { throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for(OrderItem orderItem : orderItems) { orderItem.cancel(); //Item의 stockQuantity를 늘리기 위해 orderItem을 이용 (orderItem과 Item이 연관관계니깐) } } //조회 로직(전체 주문 가격) public int getTotalPrice() { int totalPrice = 0; for(OrderItem orderItem : orderItems) { totalPrice += orderItem.getTotalPrice(); } return totalPrice; } protected Order() {}} <Delivery.java> @Entity@Getter @Setterpublic class Delivery { @Id @GeneratedValue private Long id; @OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY) @JsonIgnore private Order order; @Embedded private Address address; @Enumerated(EnumType.STRING) private DeliveryStatus status; //READY, COMP} <Member.java> @Entity@Getter @Setterpublic class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @JsonIgnore @OneToMany(mappedBy = "member") //Order클래스의 member 필드에 의해 mapped by 되는거야! private List<Order> orders = new ArrayList<>();} <OrderItem.java> @Entity@Getter @Setterpublic class OrderItem { @Id @GeneratedValue @Column(name = "order_item_id") private Long id; @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") private Order order; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "item_id") private Item item; private int orderPrice; private int count; //생성 메서드 public static OrderItem createOrderItem(Item item, int orderPrice, int count) { OrderItem orderItem = new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); item.removeStock(count); return orderItem; } //비즈니스 로직(주문취소) public void cancel() { item.addStock(count); } //조회 로직(전체 주문 가격) public int getTotalPrice() { return orderPrice * count; } protected OrderItem() {}} 양방향 연관관계가 걸린 한쪽에 @JsonIgnore을 작성하였지만 에러가 계속 발생하여 문의 드립니다. 항상 강의 잘 듣고 있습니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Whitelabel Error Page
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]"C:\Program Files\Java\jdk-11.0.2\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=62148:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath C:\study\hello-spring\hello-spring\out\production\classes;C:\study\hello-spring\hello-spring\out\production\resources;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-thymeleaf\2.6.3\1468befdafc10744d410848ea5ecb4d44c6c215b\spring-boot-starter-thymeleaf-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\2.6.3\ceb6e909c144daf9e792069f5f0efd105c8712a\spring-boot-starter-web-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\2.6.3\1211af6e300c0584e01c7a9a75e585ac0aec6ea6\spring-boot-starter-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf-spring5\3.0.14.RELEASE\a0588f30a1e7dcadfc5c260ef6c6078ef377384\thymeleaf-spring5-3.0.14.RELEASE.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.thymeleaf.extras\thymeleaf-extras-java8time\3.0.4.RELEASE\36e7175ddce36c486fff4578b5af7bb32f54f5df\thymeleaf-extras-java8time-3.0.4.RELEASE.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\2.6.3\b43885849bde2ad5d436c5acdd43b21730f9c676\spring-boot-starter-json-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\2.6.3\41aeb03bb964192c817540aeeeecfe0debac8d05\spring-boot-starter-tomcat-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\5.3.15\28307dda4cb5fbeb6f7d7e7c846f464da0eba955\spring-webmvc-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\5.3.15\a228b373eff7fe34e868827ab02c91b8bf7a643e\spring-web-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\2.6.3\8bf96f63e9479b5a1c17d1fa05b149bb5ed050e2\spring-boot-autoconfigure-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\2.6.3\f1127e8a70ba7b9f12581e79ea963b739059bf55\spring-boot-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\2.6.3\86599127b1e69a6180014cbeed8297ba26e8c6aa\spring-boot-starter-logging-2.6.3.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\1.3.5\59eb84ee0d616332ff44aba065f3888cf002cd2d\jakarta.annotation-api-1.3.5.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\5.3.15\e813c2311465672d3089fc7be8dbbadb04e64d6b\spring-core-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.29\6d0cdafb2010f1297e574656551d7145240f6e25\snakeyaml-1.29.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf\3.0.14.RELEASE\5ec84717bf76bcbcc133f9f19bab754f97b92f8\thymeleaf-3.0.14.RELEASE.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.33\d375aa1b98d34d5ddf73a3f19eaad66e98975b12\slf4j-api-1.7.33.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.13.1\1ece5a87b59701328215e0083448b4d451857cbd\jackson-datatype-jsr310-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.13.1\cbeec2259213c555ef451a2e05f35ed1dbfbf799\jackson-module-parameter-names-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.13.1\8ecfa9bcd714269fdf22c33f9fd00d0643bd0e21\jackson-datatype-jdk8-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.13.1\698b2d2b15d9a1b7aae025f1d9f576842285e7f6\jackson-databind-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\9.0.56\d84be683a5d47e820d077db1d511181c7db9e4e9\tomcat-embed-websocket-9.0.56.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\9.0.56\7c8e0008564c644beec976ab115e2670bb4d7003\tomcat-embed-core-9.0.56.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\9.0.56\8e4f28f714693ad4e158e61f41371d4e4c6b4e23\tomcat-embed-el-9.0.56.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\5.3.15\80a12b7dcb3332fbd65c3649249fd35561ffc561\spring-context-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\5.3.15\362f36bbc4c4b46cc2e4f219df22d08945000c2\spring-expression-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\5.3.15\195966e1f4260f89696e668856ebfd9a1bc76404\spring-aop-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\5.3.15\a88e2ccfe8b131bcff2e643b90d52f6d928e7369\spring-beans-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.10\f69d97ef3335c6ab82fc21dfb77ac613f90c1221\logback-classic-1.2.10.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.17.1\3619fd18278a1a895c1dca8c5be002768071a20e\log4j-to-slf4j-2.17.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\1.7.33\53fd89b530d41b8f6744c754de1c9b02e82f2d7\jul-to-slf4j-1.7.33.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\5.3.15\88da960b4fcbd28621aea8b9911976adc06afce4\spring-jcl-5.3.15.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.attoparser\attoparser\2.0.5.RELEASE\a93ad36df9560de3a5312c1d14f69d938099fa64\attoparser-2.0.5.RELEASE.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.unbescape\unbescape\1.1.6.RELEASE\7b90360afb2b860e09e8347112800d12c12b2a13\unbescape-1.1.6.RELEASE.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.13.1\1cbcbe4623113e6af92ccaa89884a345270f1a87\jackson-annotations-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.13.1\51ae921a2ed1e06ca8876f12f32f265e83c0b2b8\jackson-core-2.13.1.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.10\5328406bfcae7bcdcc86810fcb2920d2c297170d\logback-core-1.2.10.jar;C:\Users\sys69\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.17.1\d771af8e336e372fb5399c99edabe0919aeaf5b2\log4j-api-2.17.1.jar hello.hellospring.HelloSpringApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.3) 2022-01-25 16:54:46.716 INFO 6140 --- [ main] h.hellospring.HelloSpringApplication : Starting HelloSpringApplication using Java 11.0.2 on DESKTOP-MOMBHQQ with PID 6140 (C:\study\hello-spring\hello-spring\out\production\classes started by sys69 in C:\study\hello-spring\hello-spring) 2022-01-25 16:54:46.718 INFO 6140 --- [ main] h.hellospring.HelloSpringApplication : No active profile set, falling back to default profiles: default 2022-01-25 16:54:47.204 INFO 6140 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8090 (http) 2022-01-25 16:54:47.209 INFO 6140 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-01-25 16:54:47.209 INFO 6140 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56] 2022-01-25 16:54:47.255 INFO 6140 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-01-25 16:54:47.255 INFO 6140 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 500 ms 2022-01-25 16:54:47.368 INFO 6140 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2022-01-25 16:54:47.396 WARN 6140 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration) 2022-01-25 16:54:47.437 INFO 6140 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8090 (http) with context path '' 2022-01-25 16:54:47.445 INFO 6140 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 0.952 seconds (JVM running for 1.377) localhost:8080/hello 도 안되고 localhost:8090/hello도 안됩니다. 하지만 http://localhost:63342/hello-spring/hello-spring.main/static/index.html?_ijt=7i0a6r5q4deib0ikt42sjr1mh3 이렇게 나오면서 실행이 됩니다. 이 문제를 질문하고 싶습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
efficientDet customdata 모델 성능 측정
안녕하세요 수강생입니다. 다름이 아니라 efficientDet esri 코드를 기반으로 custom data로 프로젝트를 하고 있습니다. 현재 결과 보고 작성단계로 모델성능 측정을 하고 시각화하고 싶습니다. inference time은 공유해주신 코드에서 이미지, 영상 등 예시를 통해서 측정하는 방법을 알 수 있었습니다. 그리고 precision-recore scurves, f1score, mAP graphs and area 등을 구하고 싶습니다. 1. acc, loss 측정 방법 1) 제가 탐색한 방법으로 compile후 history 시각화가 있습니다. model fitting 하기 이전에 model.compile해서 history로 acc, loss를 구하고 싶은데요. 혹시 compile에 정의할 loss 함수로 focal function로 지정해야하는지 해당 코드에서는 어떤 loss function적절한지, 혹은 학습 기록 보니까 optimizer는 momentum으로 지정해야하는 것인지 고민입니다. 2. mAP를 구하는 방법 1) 라이브러리에 의해 구하는 방법 https://blog.roboflow.com/mean-average-precision/ 의 포스트에서 공유한 calculate mAP in colab 처럼 https://colab.research.google.com/drive/1pLvZpz0_Ob0yOQ7hxPhVRT04Cb3FGARb#scrollTo=dFSgxwD9Igo6 에서 처럼 https://github.com/Cartucho/mAP 라이브러리를 써서 class_id 별의 AP를 구한 후 평균을 낸 mAP를 제안하고 있는데 이 방법을 쓸지 고민입니다. 2) 직접 세어서 구하는 방법 이런 방식으로 confidence_threshold를 0.9부터 0.05까지 inference하면서 그래프를 그리려고 합니다. 다만, 한장의 이미지에 측정을 하고 있어 그 이미지가 모델을 잘 설명할 수 있는 사례인지 알수없고, 한장의 이미지로만 측정을 하는게 맞는지, 또 그래프를 그리고 면적을 측정하는 것이 맞는 방법인지 고민하고 있습니다. 이러한 고민들을 했습니다. 이러한 방식들이 적절한지, 혹은 다른 계산 방법이 있다면 추천해주시면 감사하겠습니다. 감사합니다.
-
미해결파이썬(Python) 기초부터 실무까지 part.1
실행이 안돼요.
파이썬 소개 실습 2번 하는데 계속 에러만 뜨는데 어떻게 하나요? -