안녕하세요 선생님. 한가지 여쭤보고 싶은 점이 있어서 글을 남깁니다. 수업과 조금 별개일 수 있지만 ElementCollection도 따로 쿼리를 발생시키지 않고 한 번에 끌어오는 마땅한 방법이 있을지 여쭤보고 싶습니다. 선생님 강의를 듣고 공부한 덕분에 요즘 더 많은 것들을 배우고 적용시킬 수 있었습니다. 감사합니다!
강의 정말 잘 듣고 있습니다. 다만, 아쉬운 점은 aws에서 섹션7 Beanstalk로 리액트 앱을 배포할 때 502 예외가 발생하며 정상적으로 배포가 되지 않습니다. 관련 로그를 첨부해드리오니 확인해주시고 답변 부탁드립니다. AWS 너무 어렵네요 ..ㅠ https://drive.google.com/file/d/1wexDWJjb3wI6ZL5idgorFZVSe00ZePSC/view?usp=sharing
강사님, 안녕하세요. Item 클래스에서 id의 변수에 @Column(name = "ITEM_ID") private Long id; 위와 같은 식으로 네임 속성으로 ITEM_ID를 주어 데이터베이스의 컬럼과 id 변수의 이름을 맞추신 것 같습니다. 그런데 위에 코드를 private Long item_id; 와 같이 바로 데이터베이스와 맞추어서 persist로 영속성을 주어 DB에 입력하는 방법은 어떤지 궁금합니다. 답변 꼭 부탁드리겠습니다. 감사합니다.
안녕하세요. 질문 있습니다. toString()은 Number 오브젝트에 속해 있는 함수로 이해하면 되나요? 그게 맞다면 하기 예제에서, 어째서 value.Number.toString()이 아닌 value라는 변수에 바로 .toString()으로 작성되는 건가요? === var value = 20; log(value.toString(16)); ===
안녕하세요. 강사님, 항상강의 잘 보고 있습니다. 제가 실무에서 si 사업을 하다보니 레거시 프로젝트를 많이 접합니다. 실무에서 필드 주입을 많이사용하더라구요. @Resource를 주로 사용하더라구요. service 클래스나, repository를 주입할때 사용합니다. 자바에서 지원하는걸로 알고 있는데요. 저만 다르게 강의에서 배운데로 하자니 혼자 개발 하는게 아니라 같이 사용중입니다;; 강의에서는 언급이 없으신건 스프링에서 지원하느게 아니라서 그런건가요? @Autowired의 단점이 @Resource에서도 해당하는거겠죠? 사용을 하지 말아야할거 같은데.. 이번 강의 잘 보고 설득해야겠네요..
안녕하세요. 질문이 있어 글을 남깁니다. Number()라는 함수가 Number라는 오브젝트에 있다고 이해 했는데요. 오브젝트 내부에 있는 함수를 호출하려면 Number.Number( ) 처럼 해야 하는 거 아닌가요? ㅜㅜ 밑에 있는 예로 들면 func()만 입력하면 안 되고 obj.func()로 입력해야 하는 것처럼요. ex) == var obj = {func : function( ) {console.log('hi')}; obj.func();//hi === Number.를 붙이지 않고 바로 Number('123') 이런식으로 함수를 호출할 수 있는 이유가 궁금합니다. ------------ 답글 ------------ 좋은 질문입니다. parseInt() 형태로 작성하는 것이 문법이듯이 Number("123") 형태도 문법입니다. Number.number("123")처럼 정형적인 형태로 처음부터 설계했어야 한다고 생각합니다. 설계 실수라고 할 수는 없지만, 실수에 가까우며 (오브젝트.함수, 인스턴스.메소드) 형태로 호출하는 관점에서 보면 일관성이 떨어집니다. Number.parseInt(), Number.isNaN() 등을 새로 만든 것은 이런 것을 염두에 둔 것으로 생각합니다. 이런 것을 추가하듯이 새로운 ECMAScript 에디션에 Number.number(), String.string() 형태가 추가되었으면 좋겠다는 생각이 듭니다. 이제와서 바꿀 수 없으므로 문법이라고 생각하는 것이 나을 것 같습니다.
제 코드는 이렇습니다.. 그 실수로 itemList.html 파일을 만들지 않고 itemList 파일을 생성해서 지웠더니 그 이후로는 itemList.html 파일을 만들어도 html 파일로 인식하지 않습니다..ㅠㅠ 그래서 파일이름을 itemlist.html로 하고 진행하였는데 이러한 에러가 출력됩니다..ㅠㅠ 에러코드입니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sun May 16 21:12:07 KST 2021 There was an unexpected error (type=Internal Server Error, status=500). org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i] org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i] at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) at jpabook.jpashop.repository.ItemRepository$$EnhancerBySpringCGLIB$$b91c1e16.findAll(<generated>) at jpabook.jpashop.service.ItemService.findItems(ItemService.java:24) at jpabook.jpashop.service.ItemService$$FastClassBySpringCGLIB$$b9995082.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692) at jpabook.jpashop.service.ItemService$$EnhancerBySpringCGLIB$$adfdbcee.findItems(<generated>) at jpabook.jpashop.domain.controller.ItemController.list(ItemController.java:48) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:734) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:825) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) at com.sun.proxy.$Proxy98.createQuery(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy98.createQuery(Unknown Source) at jpabook.jpashop.repository.ItemRepository.findAll(ItemRepository.java:30) at jpabook.jpashop.repository.ItemRepository$$FastClassBySpringCGLIB$$dc3fed7a.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 68 more Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: selete near line 1, column 1 [selete i from jpabook.jpashop.domain.item.Item i] at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:301) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:613) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) ... 89 more
이번에 rds 생성 후 만들었던 ec2 외에도 이전 강의에서 간단히 html 만들었던 ec2 인스턴스에도 사진과 같은 에러가 나며 접근이 안됩니다 혹시 어떤 문제인지 알 수 있을까요? 찾아보니 탄력적 ip 설정하라고 해서 나름대로 해보았는데 크게 달라지는건 없습니다 설정은 강의 따라가며 같게 한 것 같은데 어떤 부분을 더 보내드려야 해결에 도움이 될까요?
onetomany relationship 에 있는 wsi, record 엔티티들이 존재하며 lazy loading입니다. 위 코드에서 wsi 리스트를 호출하게 되면 제 생각으로는 records 에 대한 프록시 객체가 생성되야서 records 라는 필드가 null이 아니여야 하는데 null이 됩니다.. 왜그럴까요. @Test fun findLatestByWsiIdTest() { val em = entityManager.createEntityManager() val tx = em.transaction tx.begin() createDummyData() em.flush() em.clear() val allProjectIdList = projectRepository.findAll().map { it.id!! } em.clear() println("********************* start ***************************") allProjectIdList.forEach { id -> run { val wsiList = wsiRepository.findAllByProjectId(id) //.map { it.id!! } println("each wsis of project size : ${wsiList.size}") wsiList.forEach { wsi -> run { println(wsi.records?.size) } } } } println("********************* end ***************************") tx.rollback() }
pc에서 확인할때는 풀스크린 다 잘되는데 실제로 핸드폰 크롬으로 들어가보면 위에가 좀 비네요 원래 이런가요? 첫번째 사진처럼 상단에 주소창이 내려와있으면 딱맞는데 두번째 사진처럼 주소창이 없으면 위에 섹션이 보이게되네요.. 스크롤 플러그인 사용해서 터치하면 한섹션씩 보이게 하려고했는데 그때도 두번째사진처럼 주소창이없으면 빌까봐 걱정되네요