inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

JpaMemberRepository 이후 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] "C:\Program Files\Java\jdk-12\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\lib\idea_rt.jar=8216:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\tjfgh\.m2\repository\org\junit\platform\junit-platform-launcher\1.8.2\junit-platform-launcher-1.8.2.jar;C:\Users\tjfgh\.m2\repository\org\junit\platform\junit-platform-engine\1.8.2\junit-platform-engine-1.8.2.jar;C:\Users\tjfgh\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\tjfgh\.m2\repository\org\junit\platform\junit-platform-commons\1.8.2\junit-platform-commons-1.8.2.jar;C:\Users\tjfgh\.m2\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\lib\idea_rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\plugins\junit\lib\junit5-rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\plugins\junit\lib\junit-rt.jar;C:\Users\tjfgh\Desktop\spring\hello-spring\out\test\classes;C:\Users\tjfgh\Desktop\spring\hello-spring\out\production\classes;C:\Users\tjfgh\Desktop\spring\hello-spring\out\production\resources;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-thymeleaf\2.6.5\6cff5a773aeac16ee05e9471070eb916c496cff\spring-boot-starter-thymeleaf-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\2.6.5\2fe510ed31c08e65265451a407607fe53666df0a\spring-boot-starter-web-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jpa\2.6.5\8021867a0f7369de293dd15f6141aff375f8f736\spring-boot-starter-data-jpa-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-test\2.6.5\652bfc7d538aa666ff98f39a41282363ce85c163\spring-boot-starter-test-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\2.6.5\26a7cd427b33d44d1166097ad31cd49880efe695\spring-boot-starter-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf-spring5\3.0.15.RELEASE\7170e1bcd1588d38c139f7048ebcc262676441c3\thymeleaf-spring5-3.0.15.RELEASE.jar;C:\Users\tjfgh\.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\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\2.6.5\aadda8a6dd94ba4c281877ebde276b8e7c6a9700\spring-boot-starter-json-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\2.6.5\912894b73814637c077cde8a06312e3abde3382f\spring-boot-starter-tomcat-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\5.3.17\d62bd1ef6a9aee74557bd59fb96030fd52cf2fc1\spring-webmvc-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\5.3.17\66fdc6bbaba2fd7242046131895353d9669a19ad\spring-web-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-aop\2.6.5\51278e3bde343e53e4ebd7bab3083cfc5af565cb\spring-boot-starter-aop-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\2.6.5\6117f80dec65b70ee4fdd631d5fe28c4832de80e\spring-boot-starter-jdbc-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\jakarta.transaction\jakarta.transaction-api\1.3.3\c4179d48720a1e87202115fbed6089bdc4195405\jakarta.transaction-api-1.3.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\jakarta.persistence\jakarta.persistence-api\2.2.3\8f6ea5daedc614f07a3654a455660145286f024e\jakarta.persistence-api-2.2.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.hibernate\hibernate-core\5.6.7.Final\c62626c463b75530acb4f2fb2ae3ca85d80cfa06\hibernate-core-5.6.7.Final.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jpa\2.6.3\7fbfafa3b27c8f2e315fe489c2f0699a24f32082\spring-data-jpa-2.6.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aspects\5.3.17\ce487f928ee644955f4c94148e42dd1471566b0f\spring-aspects-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-test-autoconfigure\2.6.5\53d80474bbc4e7584e17d93fc058cd2faeb97ea7\spring-boot-test-autoconfigure-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-test\2.6.5\21dcc8b330b7787cd306fbea8b9f4659db7c889f\spring-boot-test-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.jayway.jsonpath\json-path\2.6.0\67f565b424f7903a12d4f5b9361b11462ecacdac\json-path-2.6.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\jakarta.xml.bind\jakarta.xml.bind-api\2.3.3\48e3b9cfc10752fba3521d6511f4165bea951801\jakarta.xml.bind-api-2.3.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.assertj\assertj-core\3.21.0\27a14d6d22c4e3d58f799fb2a5ca8eaf53e6942a\assertj-core-3.21.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest\2.2\1820c0968dba3a11a1b30669bb1f01978a91dedc\hamcrest-2.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.jupiter\junit-jupiter\5.8.2\5a817b1e63f1217e5c586090c45e681281f097ad\junit-jupiter-5.8.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.mockito\mockito-junit-jupiter\4.0.0\b76de25bd6e5d8f7924d0536729c0076e37e9396\mockito-junit-jupiter-4.0.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.mockito\mockito-core\4.0.0\f5195e0c4a45716bbd2d1d29173adbd148acce3a\mockito-core-4.0.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.skyscreamer\jsonassert\1.5.0\6c9d5fe2f59da598d9aefc1cfc6528ff3cf32df3\jsonassert-1.5.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-test\5.3.17\49705efaf6243481a0a12a3e4c8722c58f054a36\spring-test-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\5.3.17\e709af88b40e1b3df193df3460faef44da41fd51\spring-core-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.xmlunit\xmlunit-core\2.8.4\35be57989ca80eefa03161b211630e319a8f36c6\xmlunit-core-2.8.4.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\2.6.5\c7b562cfde36709581afdcfac128979a83e8fe7d\spring-boot-autoconfigure-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\2.6.5\7a93e397b7af3300a9692e6be82fe7410092841c\spring-boot-2.6.5.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\2.6.5\70d21bfd3993dea813c68b29d623853a069a0af1\spring-boot-starter-logging-2.6.5.jar;C:\Users\tjfgh\.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\tjfgh\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.29\6d0cdafb2010f1297e574656551d7145240f6e25\snakeyaml-1.29.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf\3.0.15.RELEASE\13e3296a03d8a597b734d832ed8656139bf9cdd8\thymeleaf-3.0.15.RELEASE.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.36\6c62681a2f655b49963a5983b8b0950a6120ae14\slf4j-api-1.7.36.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.13.2\cddd9380efd4b81ea01e98be8fbdc9765a81793b\jackson-datatype-jsr310-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.13.2\c406ec37f89125d1003093d5b96d216dc967153c\jackson-module-parameter-names-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.13.2\95f59cf63c3aadc1549578254af839a9c42ae84f\jackson-datatype-jdk8-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.13.2\926e48c451166a291f1ce6c6276d9abbefa7c00f\jackson-databind-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\9.0.60\a88262a55ae2c4b5404149a48122523688be341a\tomcat-embed-websocket-9.0.60.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\9.0.60\e14045220243804544ddb168cb532f4640a220c\tomcat-embed-core-9.0.60.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\9.0.60\46dad1a278f348ca73466e0b73132bf4c4892c06\tomcat-embed-el-9.0.60.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\5.3.17\756201e2e2488fc164ae15b2e561f96960162577\spring-context-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\5.3.17\31746d5387cfec075a5ec01adb407d6658dd59e\spring-expression-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\5.3.17\b7aaf5dd40a64b3419ff779746fcaf7bea92d29d\spring-aop-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\5.3.17\3d9c415cb47c96a81b1267665f513e4676af53b4\spring-beans-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjweaver\1.9.7\158f5c255cd3e4408e795b79f7c3fbae9b53b7ca\aspectjweaver-1.9.7.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\5.3.17\383ae54b7171f34952ff5f19c5eadf4f579271cd\spring-jdbc-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\4.0.3\107cbdf0db6780a065f895ae9d8fbf3bb0e1c21f\HikariCP-4.0.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\2.3.6\1e6cd0e5d9f9919c8c8824fb4d310b09a978a60e\jaxb-runtime-2.3.6.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.hibernate.common\hibernate-commons-annotations\5.1.2.Final\e59ffdbc6ad09eeb33507b39ffcf287679a498c8\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.jboss.logging\jboss-logging\3.4.3.Final\c4bd7e12a745c0e7f6cf98c45cdcdf482fd827ea\jboss-logging-3.4.3.Final.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy\1.11.22\8b4c7fa5562a09da1c2a9ab0873cb51f5034d83f\byte-buddy-1.11.22.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\antlr\antlr\2.7.7\83cd2cd674a217ade95a4bb83a8a14f351f48bd0\antlr-2.7.7.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.jboss\jandex\2.4.2.Final\1e1c385990b258ff1a24c801e84aebbacf70eb39\jandex-2.4.2.Final.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml\classmate\1.5.1\3fe0bed568c62df5e89f4f174c101eab25345b6c\classmate-1.5.1.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-orm\5.3.17\5636b1b924f38ab3b3ab25bcd7003cadc334340a\spring-orm-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-commons\2.6.3\767ebf330da425ac4ab4b14391a60d9ed3ba18b7\spring-data-commons-2.6.3.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\5.3.17\d41d39725d3ae613b6649094002120ab27ba532\spring-tx-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\net.minidev\json-smart\2.4.8\7c62f5f72ab05eb54d40e2abf0360a2fe9ea477f\json-smart-2.4.8.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\jakarta.activation\jakarta.activation-api\1.2.2\99f53adba383cb1bf7c3862844488574b559621f\jakarta.activation-api-1.2.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.jupiter\junit-jupiter-params\5.8.2\ddeafe92fc263f895bfb73ffeca7fd56e23c2cce\junit-jupiter-params-5.8.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.jupiter\junit-jupiter-api\5.8.2\4c21029217adf07e4c0d0c5e192b6bf610c94bdc\junit-jupiter-api-5.8.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.11.22\2fbcf3210dfc09b42242e3b66a5281cc5b9adb80\byte-buddy-agent-1.11.22.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.vaadin.external.google\android-json\0.0.20131108.vaadin1\fa26d351fe62a6a17f5cda1287c1c6110dec413f\android-json-0.0.20131108.vaadin1.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\5.3.17\2d3c82d3c656d0743ed927a475745ac2394ea421\spring-jcl-5.3.17.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.11\4741689214e9d1e8408b206506cbe76d1c6a7d60\logback-classic-1.2.11.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.17.2\17dd0fae2747d9a28c67bc9534108823d2376b46\log4j-to-slf4j-2.17.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\1.7.36\ed46d81cef9c412a88caef405b58f93a678ff2ca\jul-to-slf4j-1.7.36.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.attoparser\attoparser\2.0.5.RELEASE\a93ad36df9560de3a5312c1d14f69d938099fa64\attoparser-2.0.5.RELEASE.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.unbescape\unbescape\1.1.6.RELEASE\7b90360afb2b860e09e8347112800d12c12b2a13\unbescape-1.1.6.RELEASE.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.13.2\ec18851f1976d5b810ae1a5fcc32520d2d38f77a\jackson-annotations-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.13.2\a6a0e0620d51833feffc67bccb51937b2345763\jackson-core-2.13.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\2.3.6\45db7b69a8f1ec2c21eb7d4fc0ee729f53c1addc\txw2-2.3.6.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\3.0.12\cbbe1a62b0cc6c85972e99d52aaee350153dc530\istack-commons-runtime-3.0.12.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\net.minidev\accessors-smart\2.4.8\6e1bee5a530caba91893604d6ab41d0edcecca9a\accessors-smart-2.4.8.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apiguardian\apiguardian-api\1.1.2\a231e0d844d2721b0fa1b238006d15c6ded6842a\apiguardian-api-1.1.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.platform\junit-platform-commons\1.8.2\32c8b8617c1342376fd5af2053da6410d8866861\junit-platform-commons-1.8.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.opentest4j\opentest4j\1.2.0\28c11eb91f9b6d8e200631d46e20a7f407f2a046\opentest4j-1.2.0.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.11\a01230df5ca5c34540cdaa3ad5efb012f1f1f792\logback-core-1.2.11.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.17.2\f42d6afa111b4dec5d2aea0fe2197240749a4ea6\log4j-api-2.17.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm\9.1\a99500cf6eea30535eeac6be73899d048f8d12a8\asm-9.1.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.h2database\h2\1.4.200\f7533fe7cb8e99c87a43d325a77b4b678ad9031a\h2-1.4.200.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.jupiter\junit-jupiter-engine\5.8.2\c598b4328d2f397194d11df3b1648d68d7d990e3\junit-jupiter-engine-5.8.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.objenesis\objenesis\3.2\7fadf57620c8b8abdf7519533e5527367cb51f09\objenesis-3.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\com.sun.activation\jakarta.activation\1.2.2\74548703f9851017ce2f556066659438019e7eb5\jakarta.activation-1.2.2.jar;C:\Users\tjfgh\.gradle\caches\modules-2\files-2.1\org.junit.platform\junit-platform-engine\1.8.2\b737de09f19864bd136805c84df7999a142fec29\junit-platform-engine-1.8.2.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 hello.hellospring.service.MemberServiceIntegrationTest 14:44:52.776 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate] 14:44:52.804 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)] 14:44:52.880 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [hello.hellospring.service.MemberServiceIntegrationTest] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper] 14:44:52.910 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [hello.hellospring.service.MemberServiceIntegrationTest], using SpringBootContextLoader 14:44:52.922 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [hello.hellospring.service.MemberServiceIntegrationTest]: class path resource [hello/hellospring/service/MemberServiceIntegrationTest-context.xml] does not exist 14:44:52.924 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [hello.hellospring.service.MemberServiceIntegrationTest]: class path resource [hello/hellospring/service/MemberServiceIntegrationTestContext.groovy] does not exist 14:44:52.924 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [hello.hellospring.service.MemberServiceIntegrationTest]: no resource found for suffixes {-context.xml, Context.groovy}. 14:44:52.926 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [hello.hellospring.service.MemberServiceIntegrationTest]: MemberServiceIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 14:44:53.041 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [hello.hellospring.service.MemberServiceIntegrationTest] 14:44:53.186 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [C:\Users\tjfgh\Desktop\spring\hello-spring\out\production\classes\hello\hellospring\HelloSpringApplication.class] 14:44:53.195 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration hello.hellospring.HelloSpringApplication for test class hello.hellospring.service.MemberServiceIntegrationTest 14:44:53.469 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [hello.hellospring.service.MemberServiceIntegrationTest]: using defaults. 14:44:53.470 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.event.ApplicationEventsTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener] 14:44:53.514 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@1e8b7643, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@51549490, org.springframework.test.context.event.ApplicationEventsTestExecutionListener@71e9ebae, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@73d983ea, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@36a5cabc, org.springframework.test.context.support.DirtiesContextTestExecutionListener@432038ec, org.springframework.test.context.transaction.TransactionalTestExecutionListener@7daa0fbd, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@42530531, org.springframework.test.context.event.EventPublishingTestExecutionListener@5a3bc7ed, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@181e731e, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@35645047, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@6f44a157, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@6bc407fd, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener@291f18, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@17d88132] 14:44:53.524 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@c7ba306 testClass = MemberServiceIntegrationTest, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@4ff8d125 testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class hello.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@29e495ff, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@15bbf42f, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a84a97d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@223aa2f7, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d02f94e, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@7225790e], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null]. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.5) 2022-04-10 14:44:54.280 INFO 26660 --- [ main] h.h.s.MemberServiceIntegrationTest : Starting MemberServiceIntegrationTest using Java 12 on DESKTOP-U5FU35V with PID 26660 (started by tjfgh in C:\Users\tjfgh\Desktop\spring\hello-spring) 2022-04-10 14:44:54.282 INFO 26660 --- [ main] h.h.s.MemberServiceIntegrationTest : No active profile set, falling back to 1 default profile: "default" 2022-04-10 14:44:55.628 INFO 26660 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2022-04-10 14:44:55.661 INFO 26660 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 17 ms. Found 0 JPA repository interfaces. 2022-04-10 14:44:56.739 INFO 26660 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2022-04-10 14:44:56.866 INFO 26660 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.7.Final 2022-04-10 14:44:57.210 INFO 26660 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2022-04-10 14:44:58.355 INFO 26660 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2022-04-10 14:44:58.468 INFO 26660 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2022-04-10 14:44:58.523 INFO 26660 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 2022-04-10 14:44:59.507 INFO 26660 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2022-04-10 14:44:59.524 INFO 26660 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2022-04-10 14:45:00.245 WARN 26660 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2022-04-10 14:45:00.930 INFO 26660 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2022-04-10 14:45:01.624 INFO 26660 --- [ main] h.h.s.MemberServiceIntegrationTest : Started MemberServiceIntegrationTest in 8.01 seconds (JVM running for 10.33) 2022-04-10 14:45:01.812 INFO 26660 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context [DefaultTestContext@c7ba306 testClass = MemberServiceIntegrationTest, testInstance = hello.hellospring.service.MemberServiceIntegrationTest@5cf3a7f9, testMethod = 중복_회원_예외@MemberServiceIntegrationTest, testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@4ff8d125 testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class hello.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@29e495ff, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@15bbf42f, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a84a97d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@223aa2f7, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d02f94e, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@7225790e], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@621a387f]; rollback [true] Hibernate: select member0_.id as id1_0_, member0_.name as name2_0_ from member member0_ where member0_.name=? 2022-04-10 14:45:02.400 INFO 26660 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test: [DefaultTestContext@c7ba306 testClass = MemberServiceIntegrationTest, testInstance = hello.hellospring.service.MemberServiceIntegrationTest@5cf3a7f9, testMethod = 중복_회원_예외@MemberServiceIntegrationTest, testException = java.lang.IllegalStateException: 이미 존재하는 회원입니다., mergedContextConfiguration = [WebMergedContextConfiguration@4ff8d125 testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class hello.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@29e495ff, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@15bbf42f, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a84a97d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@223aa2f7, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d02f94e, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@7225790e], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]] java.lang.IllegalStateException: 이미 존재하는 회원입니다. at hello.hellospring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:31) at java.base/java.util.Optional.ifPresent(Optional.java:183) at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:30) at hello.hellospring.service.MemberService.join(MemberService.java:24) at hello.hellospring.service.MemberService$$FastClassBySpringCGLIB$$530c61b7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) 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:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at hello.hellospring.service.MemberService$$EnhancerBySpringCGLIB$$4067b1ff.join(<generated>) at hello.hellospring.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:41) 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:567) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) 2022-04-10 14:45:02.424 INFO 26660 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context [DefaultTestContext@c7ba306 testClass = MemberServiceIntegrationTest, testInstance = hello.hellospring.service.MemberServiceIntegrationTest@107ebdad, testMethod = 회원가입@MemberServiceIntegrationTest, testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@4ff8d125 testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class hello.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@29e495ff, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@15bbf42f, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a84a97d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@223aa2f7, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d02f94e, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@7225790e], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@621a387f]; rollback [true] Hibernate: select member0_.id as id1_0_, member0_.name as name2_0_ from member member0_ where member0_.name=? Hibernate: call next value for hibernate_sequence 2022-04-10 14:45:02.435 WARN 26660 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 90036, SQLState: 90036 2022-04-10 14:45:02.436 ERROR 26660 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Sequence "HIBERNATE_SEQUENCE" not found; SQL statement: call next value for hibernate_sequence [90036-200] 2022-04-10 14:45:02.447 INFO 26660 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test: [DefaultTestContext@c7ba306 testClass = MemberServiceIntegrationTest, testInstance = hello.hellospring.service.MemberServiceIntegrationTest@107ebdad, testMethod = 회원가입@MemberServiceIntegrationTest, testException = javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement, mergedContextConfiguration = [WebMergedContextConfiguration@4ff8d125 testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class hello.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@29e495ff, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@15bbf42f, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a84a97d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@223aa2f7, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d02f94e, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@7225790e], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]] javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:762) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:742) 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:567) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy90.persist(Unknown Source) at hello.hellospring.repository.JpaMemberRepository.save(JpaMemberRepository.java:17) at hello.hellospring.service.MemberService.join(MemberService.java:25) at hello.hellospring.service.MemberService$$FastClassBySpringCGLIB$$530c61b7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) 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:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at hello.hellospring.service.MemberService$$EnhancerBySpringCGLIB$$4067b1ff.join(<generated>) at hello.hellospring.service.MemberServiceIntegrationTest.회원가입(MemberServiceIntegrationTest.java:28) 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:567) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:75) at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:105) at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40) at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:534) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:756) ... 91 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement: call next value for hibernate_sequence [90036-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:576) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:205) at org.h2.message.DbException.get(DbException.java:181) at org.h2.command.Parser.readSequence(Parser.java:7678) at org.h2.command.Parser.readTermWithIdentifier(Parser.java:4593) at org.h2.command.Parser.readTerm(Parser.java:4311) at org.h2.command.Parser.readFactor(Parser.java:3343) at org.h2.command.Parser.readSum(Parser.java:3330) at org.h2.command.Parser.readConcat(Parser.java:3305) at org.h2.command.Parser.readCondition(Parser.java:3108) at org.h2.command.Parser.readExpression(Parser.java:3059) at org.h2.command.Parser.parseCall(Parser.java:6480) at org.h2.command.Parser.parsePrepared(Parser.java:905) at org.h2.command.Parser.parse(Parser.java:843) at org.h2.command.Parser.parse(Parser.java:815) at org.h2.command.Parser.prepareCommand(Parser.java:738) at org.h2.engine.Session.prepareLocal(Session.java:657) at org.h2.server.TcpServerThread.process(TcpServerThread.java:278) at org.h2.server.TcpServerThread.run(TcpServerThread.java:183) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:576) at org.h2.engine.SessionRemote.done(SessionRemote.java:611) at org.h2.command.CommandRemote.prepare(CommandRemote.java:85) at org.h2.command.CommandRemote.<init>(CommandRemote.java:51) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:481) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1235) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:76) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:352) at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:337) at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:90) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:176) ... 101 more 2022-04-10 14:45:02.471 INFO 26660 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2022-04-10 14:45:02.475 INFO 26660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2022-04-10 14:45:02.497 INFO 26660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. Process finished with exit code -1 다른 질문들도 서치를 해보았고 코드도 따로 복붙했는데 대체 왜 이런 오류가 나는지 모르겠습니다 .. ㅠㅠ

  • spring-boot
  • spring
  • java
  • MVC
울고싶다 댓글 1 좋아요 0 조회수 439

풀이과정 질문합니다.

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

안녕하세요!! 이번 문제는 강의를 보기전에 혼자서 풀어봤습니다. 저는 이문제를 2중for문으로 해결했습니다. 그리고 강의를 시청했는데 풀이 방법이 다르더군요... 그래서 갑자기 궁금해졌는데 코딩테스트문제를 풀때 언어에 내장되있는 기능들을 사용해도 되는건가요?? 아니면 하나하나 직접 만들면서 풀어야하는건가요?? 갑자기 궁금하네요.. ㅎㅎ

  • java
  • 코테 준비 같이 해요!
DH Kim 댓글 1 좋아요 0 조회수 219

연관관계와 관계가 없다?

해결됨

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

영속성 전이가 연관 관계 세팅과 전혀 관계가 없다는 설명이 잘 이해가 되지 않습니다. 연관 관계가 맺어져 있어야 영속성 전이도 이루어질텐데 어떤 의미에서 이렇게 설명하신건지 궁금합니다. 감사합니다.

  • java
  • JPA
도던 댓글 2 좋아요 1 조회수 542

실무에서도 repository를 도메인마다 따로 만드나요??

해결됨

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

이 강의는 도메인 별로 각 각 repository랑 service를 만들었는데 예제에서만 그런건지 실제로 실무에서도 그런지 궁금합니다 ㅠㅠ

  • repositroy
  • domain
  • spring-boot
  • java
  • JPA
  • 웹앱
  • spring
경희 댓글 1 좋아요 0 조회수 619

여러곳에서 한 테이블의 list가 필요한 경우엔?

미해결

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

만약 다음과 같이 여러곳에서 image라는 테이블을 참조한다면.. 그땐 어떻게 코드를 구현해야하는건가요? 프로젝트와 이미지는 1:n관계지만 이를 일대다로도 다대일로도 구현할 수있잖아요? 1. 만약에 다대일 양방향으로 구현 2. 일대다 단방향으로 구현 >>첫번째질문 : 어느것으로 해도 상관없나요? 근데 2번 방법을 지양하라고 하셨던 것 같아요 그래서 만약 1번 방법으로 한다고 가정할게요. 이미지 테이블같은경우 어떨땐 프로젝트의 이미지가 될수있고 (그러면 게시글의 이미지는 아닐테니 게시글_id값은 null이 되겠죠) 어떨땐 게시글의 이미지가 되겠죠..? >>두번째질문 : 근데 이 이미지가 게시글의 이미지인지 프로젝트의 이미지인지가 중요할까요..? >>세번째질문 : 만약에 중요하다면 enum을 사용하여 어떤 것의 이미지인지를 반환하는 메서드를 만들어주면되는건가요/?

  • java
  • JPA
김민지 댓글 1 좋아요 2 조회수 409

안녕하세요~ 질문드립니다

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2

안녕하세요 캐시수업도 매우 유익하네요 ... 수업듣고 사이트를 보다가 궁금한점이 생겼는데요~ 질문1. HTML 상단 메타태그에 <meta http-equiv="Cache-Control" content="no-cache"> 를 주면 서버에서 설정하지 않아도 예제에서 사용한거랑 같이 해당 HTML이 변경될 때만 다운로드할까요 ? (이러면 request header의 캐시컨트롤에 노캐시가 붙나요?) 질문2. 예제에선 HTML을 제외하고 CSS JS Image의 max-age를 길게주고 소스 변경시에만 hash를 다르게 붙여 변경된 리소스만 새 파일을 다운로드 하게 했는데요 HTML CSS JS Image를 모두 no-cache로 주면 어떻게 작동할까요 ?

  • devtools
  • react
jjongrrr 댓글 1 좋아요 1 조회수 328

SecurityContextHolder 관련 질문이 있습니다!

미해결

스프링 시큐리티

안녕하세요. 항상 좋은 강의 감사드립니다! SecurityContextholder 관련 질문이 있어 글을 적게 되었습니다. SecurityContext는 ThreadLocal 기반이고, 이를 전역에서 사용할 수 있도록 Static 변수인 SecurityContextHolder에 저장된다고 이해를 했습니다. (강의 내용을 참고, 혹시.. SecurityContextHolder가 Static 변수가 아니라면 정정해주시면 감사하겠습니다!) 여기서 궁금한 부분은... 멀티 쓰레딩 환경입니다. 스프링 MVC는 결국 요청마다 쓰레드가 할당되는 쓰레딩풀 환경이라 멀티 쓰레드로 동작을 하고 있는 것으로 알고 있습니다. 그렇다면 동시에 사용자로부터 인증 요청이 온다면, 동시에 SecurityContextHolder에 SecurityContext가 각각 저장된다는 것인데.. 이런 환경에서 어떻게 동작하는지 잘 이해하기가 어렵습니다. 예를 들어 동시에 인증 요청이 오게 되면, SecurityContextHolder의 동시성 문제는 어떻게 처리되는 걸까요? 항상 좋은 강의 감사드립니다 좋은 하루 되세요!

  • spring-boot
  • Spring Security
  • java
코린코린 댓글 1 좋아요 1 조회수 1447

컨트롤러 view 호출

해결됨

스프링 부트 개념과 활용

안녕하세요 강의 듣고 혼자 이것저것 해보고있는데 타임리프 의존성을 추가하지 않으면 컨트롤러에서 view를 호출을 못하던데 스프링 부트로 컨트롤러로 view를 호출하려면 무조건 타임리프 의존성을 추가해야하는지 궁금해서 질문드립니다.

  • java
  • spring
  • spring-boot
DaeHan Kim 댓글 1 좋아요 0 조회수 287

CQS 관련 질문

해결됨

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

안녕하세요 선생님 강의 정말 재밌게 듣고 있습니다 다름이 아니라 Service에 join메서드에서 id(Long) 값을 반환해주고 있는데 선생님께서 앞서 질문에서 CQS라고 말씀해주셨습니다. 서비스에서는 테스트의 용이성 등등 여러 장점때문에 Id값을 반환하는게 좋다고 말씀해주셨는데 컨트롤러에서는 join 이나 혹은 다른 Command쿼리를 날리는 메서드들에서 반환값은 어떤게 좋을까요.. id를 반환해 줄 수도 있는거고 void를 반환할 수 도 있는데 어떤게 best practice 인지 궁금합니다.

  • java
  • 웹앱
  • spring
  • JPA
  • spring-boot
김태형 댓글 1 좋아요 0 조회수 282

테스트 코드

미해결

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

이번 강의를 듣고 나름대로 간단한 테스트 코드를 만들어 봤는데요 이렇게 하는게 맞나 싶어서 여쭤봅니다 public class ItemTest { @Test public void 수량증가 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when item.addStock( 10 ) ; //Then Assertions. assertThat (item.getStockQuantity()).isEqualTo( 20 ) ; } @Test public void 수량감소 _ 합계 0_ 이상 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when try { item.removeStock( 10 ) ; } catch (NotEnoughStockException e) { return; } //Then Assertions. assertThat (item.getStockQuantity()).isEqualTo( 0 ) ; } @Test public void 수량감소 _ 예외발생 () { //given Item item = new Book() ; item.setStockQuantity( 10 ) ; //when try { item.removeStock( 11 ) ; } catch (Exception e) { e.printStackTrace() ; return; } fail ( " 예외가 발생해야 한다 ." ) ; } } 이렇게 진행해도 괜찮을까요? 이상한 부분이 있다면 조언 부탁드리겠습니다

  • spring-boot
  • 웹앱
  • JPA
  • java
  • spring
jaho321 댓글 1 좋아요 0 조회수 373

궁금한점이 있습니다.

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2

좋은 강의 너무 잘 듣고 있습니다. 번외지만 배포에대해 궁금한점이 있습니다. 지금 강의 예제로 사용하는 프로젝트와 같이 서버와 클라이언트 코드가 같이 있는 경우에는 어떻게 배포해야하는지 궁금합니다. 개발할때는 npm run serve 와 같이 수동으로 서버를 켜서 작동시킬 수 있지만 그렇지 않을때는 어떻게 작동시킬 수 있나요? 실제로는 서버용 레포, 클라용 레포 따로 개발해서 배포해야하는 건가요?

  • react
  • devtools
jjang9 댓글 1 좋아요 1 조회수 251

진행중에 jpa 오류가 발생 합니다.

해결됨

스프링 시큐리티

org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: io.security.corespringsecurity.domain.entity.Role; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: io.security.corespringsecurity.domain.entity.Role 찾아보니까 @ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.LAZY) 해당 에러가 발생 합니다. RoleHierarchy 의 경우 package io.security.corespringsecurity.domain.entity; import lombok.*; import javax.persistence.*; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @Entity @Table(name="ROLE_HIERARCHY") @Data @AllArgsConstructor @NoArgsConstructor @ToString(exclude = {"parentName", "roleHierarchy"}) @Builder public class RoleHierarchy implements Serializable { @Id @GeneratedValue private Long id; @Column(name = "child_name") private String childName; @ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.LAZY) @JoinColumn(name = "parent_name", referencedColumnName = "child_name") private RoleHierarchy parentName; @OneToMany(mappedBy = "parentName", cascade={CascadeType.ALL}) private Set<RoleHierarchy> roleHierarchy = new HashSet<RoleHierarchy>(); } 해당 내용으로 작성 하였구요 SetupDataLoader에서 setupSecurityResources() => private void setupSecurityResources() { Set<Role> roles = new HashSet<>(); Role adminRole = createRoleIfNotFound("ROLE_ADMIN", "관리자"); roles.add(adminRole); createResourceIfNotFound("/admin/**", "", roles, "url"); createUserIfNotFound("admin", "pass", "admin@gmail.com", 10, roles); Set<Role> roles1 = new HashSet<>(); Role managerRole = createRoleIfNotFound("ROLE_MANAGER", "매니저"); roles1.add(managerRole); createResourceIfNotFound("io.security.corespringsecurity.aopsecurity.method.AopMethodService.methodTest", "", roles1, "method"); createResourceIfNotFound("io.security.corespringsecurity.aopsecurity.method.AopMethodService.innerCallMethodTest", "", roles1, "method"); createResourceIfNotFound("execution(* io.security.corespringsecurity.aopsecurity.pointcut.*Service.*(..))", "", roles1, "pointcut"); createUserIfNotFound("manager", "pass", "manager@gmail.com", 20, roles1); createRoleHierarchyIfNotFound(managerRole, adminRole); Set<Role> roles3 = new HashSet<>(); Role childRole1 = createRoleIfNotFound("ROLE_USER", "회원"); roles3.add(childRole1); createResourceIfNotFound("/users/**", "", roles3, "url"); createUserIfNotFound("user", "pass", "user@gmail.com", 30, roles3); createRoleHierarchyIfNotFound(childRole1, managerRole); } 해당 내용으로 작성 하였습니다. 보고 따라치는 과정에서 무언가 빠졌을까요

  • spring-boot
  • java
  • Spring Security
최재영 댓글 2 좋아요 0 조회수 823

강의자료

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2

강사님 강의자료는 어디서 받을 수 있나요?? 아무리 찾아봐도 없어서 질문드립니다.

  • devtools
  • react
jjang9 댓글 2 좋아요 1 조회수 216

"더미데이터와 포스트폼 만들기" 강의순서 관련 코드 작성 뒤, 로그인에서 게시판으로 넘어가지 않는 문제로 질문 드립니다!

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요. 제로초님의 강의에 큰 도움을 받고 있음에 감사의 말씀을 드립니다. 여러 검색결과도, 질문답변도, 해당강의 반복재생으로 찾아보았으나 해결치 못한 부분이 있어 이렇게 직접 질문을 하게 됐네요! [ 마주한 문제점 & 상황 ] 은 다음과 같습니다. 1. ( 이전 상황) 로그인폼(Id, Pwd)에 텍스트를 입력해 "로그인" 버튼을 누르면 정상적으로 로그인이 됐고, Redux 역시 정상작동해 개발자도구에서 확인이 가능했습니다. 2. ( 현재 상황) 섹션3(Redux) "더미데이터와 포스트폼 만들기" 강의를 들으며 문제에 마주했습니다. 3. ( 더미데이터와 포스트폼 만들기 강의 후 ) 잘 넘어가던 로그인 화면에서 데이터는 넘어가 콘솔에 찍히지만, 화면 페이지는 게시판으로 넘어가지 않는 상황에 직면했습니다. [ 콘솔에 찍히는 Error ] 는 다음과 같습니다. [정상적으로 넘어가는 로그인 데이터] -> 그러나 로그인이 되지 않고 화면이 넘어가질 않습니다! [ 소스코드 ] 1. package.json { " name " : " react-nodebird-front " , " version " : " 1.0.0 " , " description " : "" , " main " : " index.js " , " scripts " : { " dev " : " next -p 3060 " , " build " : " next build " }, " author " : "jj " , " license " : " ISC " , " dependencies " : { " @ant-design/icons " : " ^4.7.0 " , " antd " : " ^4.19.0 " , " next " : " ^9.5.5 " , " next-redux-wrapper " : " ^6.0.2 " , " prop-types " : " ^15.8.1 " , " react " : " ^16.14.0 " , " react-dom " : " ^16.14.0 " , " react-redux " : " ^7.2.8 " , " redux " : " ^4.1.2 " , " redux-devtools-extension " : " ^2.13.9 " , " styled-components " : " ^5.3.3 " }, " devDependencies " : { " eslint " : " ^8.10.0 " , " eslint-plugin-hooks " : " ^0.4.2 " , " eslint-plugin-import " : " ^2.25.4 " , " eslint-plugin-react " : " ^7.29.3 " } } 2. LoginForm.js 파일 import React , { useState , useCallback , useMemo } from ' react '; import { Form , Input , Button } from ' antd '; import Link from ' next/link '; import styled from ' styled-components '; import { useDispatch , useSelector } from ' react-redux '; import useInput from " ../hooks/useInput "; import { loginAction } from ' ../reducers/user '; const ButtonWrapper = styled . div ` margin-top: 10px; ` ; const FormWrapper = styled (Form) ` padding: 10px; ` ; const LoginForm = ({ setIsLoggedIn }) => { const dispatch = useDispatch () ; const [ id , onChangeId ] = useInput ( '' ) ; const [ password , onChangePassword ] = useInput ( '' ) ; const onSubmitForm = useCallback ( () => { console . log ( id , password ) ; dispatch ( loginAction ( { id , password } )) ; }, [ id , password ]) ; return ( < FormWrapper onFinish ={ onSubmitForm } > < div > < label htmlFor = " user-id " > 아이디 </ label > < br /> < Input name = " user-id " value ={ id } onChange ={ onChangeId } required /> </ div > < div > < label htmlFor = " user-password " > 비밀번호 </ label > < br /> < Input name = " user-password " type = " password " value ={ password } onChange ={ onChangePassword } required /> </ div > < ButtonWrapper > < Button type = " primary " htmlType = " submit " loading ={ false } > 로그인 </ Button > < Link href = " /signup " >< a >< Button > 회원가입 </ Button ></ a ></ Link > </ ButtonWrapper > </ FormWrapper > ) ; } export default LoginForm ; 3. index.js import React from ' react '; import { useSelector } from " react-redux "; import AppLayout from " ../components/AppLayout "; import PostForm from ' ../components/PostForm '; import PostCard from ' ../components/PostCard '; const Home = () => { const { isLoggedIn } = useSelector ( ( state ) => state . user ) ; const { mainPosts } = useSelector ( ( state ) => state . post ) ; return ( < AppLayout > { isLoggedIn && < PostForm /> } { mainPosts . map ( ( post ) => < PostCard key ={ post . id } post ={ post } /> ) } </ AppLayout > ) ; } export default Home ; 4. configureStore.js import { createWrapper } from ' next-redux-wrapper '; import { applyMiddleware , compose , createStore } from ' redux '; import { composeWithDevTools } from ' redux-devtools-extension '; import reducer from ' ../reducers '; const configureStore = () => { const middlewares = [] ; const enhancer = process . env . NODE_ENV === ' production ' ? compose ( applyMiddleware ( ... middlewares )) : composeWithDevTools ( applyMiddleware ( ... middlewares )) ; const store = createStore ( reducer , enhancer ) ; return store ; }; const wrapper = createWrapper ( configureStore , { debug : process . env . NODE_ENV === ' development ' , } ) ; export default wrapper ; 5. post.js // [ initialState ] export const initialState = { mainPosts : [ { id : 1 , User : { id : 1 , nickname : ' jj ' , }, content : ' 첫 번째 게시글 #해시태그 #익스프레스 ' , Images : [ { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , }, { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , }, { src : ' https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAxNjExMjFfMjM2%2FMDAxNDc5NjY5MjEyOTEz.13R8uiaA0T8rJnLPJICAib4oVtrAzA424jbDMC9a3ckg.m0QoHt-5MdR0MH501npcL8aJof3Eu1h_9Zp0ceNm8e4g.PNG.guri4you%2F%25BB%25F6%25B1%25F2_%25BD%25C9%25B8%25AE%25C5%25D7%25BD%25BA%25C6%25AE1.png&type=sc960_832 ' , } ] , Comments : [ { User : { nickname : ' jj4 ' , }, content : ' redux를 학습 중입니다. ' , }, { User : { nickname : ' jj3 ' , }, content : ' 다음은 sage를 학습 예정임. ' , } ] } ] , imagePaths : [] , postAdded : false , } const ADD_POST = ' ADD_POST ' ; export const addPost = { type : ADD_POST , } const dummyPost = { id : 2 , content : ' 더미데이터입니다. ' , User : { id : 1 , nickname : ' jj1 ' , }, Images : [] , Comments : [] , }; const reducer = ( state = initialState , action ) => { switch ( action . type ) { case ADD_POST : return { ... state , mainPosts : [ dummyPost , ... state . mainPosts ] , postAdded : true , }; default : return state ; } }; export default reducer ; 6. PostForm.js import React , { useCallback , useState , useRef } from ' react '; import { Form , Input , Button } from ' antd '; import { useSelector , useDispatch } from ' react-redux '; import { addPost } from ' ../reducers/post '; const PostForm = () => { const { imagePaths } = useSelector ( ( state ) => state . post ) ; const dispatch = useDispatch () ; const imageInput = useRef () ; const [ text , setText ] = useState ( '' ) ; const onChangeText = useCallback ( ( e ) => { setText ( e . target . value ) ; }, []) ; const onSubmit = useCallback ( () => { dispatch ( addPost ) ; setText ( '' ) ; }, []) ; const onClickImageUpload = useCallback ( () => { imageInput . current . click () ; }, [ imageInput . current ]) ; return ( < Form style ={{ margin : ' 10px 0 20px ' }} encType = " multipart/form-data " onFinish ={ onSubmit } > < Input.TextArea value ={ text } onChange ={ onChangeText } maxLength ={ 140 } placeholder = " 어떤 신기한 일이 있었나요? " /> < div > < input type = " file " multiple hidden ref ={ imageInput } /> < Button onClick ={ onClickImageUpload } > 이미지 업로드 </ Button > < Button type = " primary " style ={{ float : ' right ' }} htmlFor = " submit " > 짹짹 </ Button > </ div > < div > { imagePaths . map ( ( v ) => ( < div key ={ v } style ={{ display : ' inline-block ' }} > < img src ={ v } style ={{ width : ' 200px ' }} alt ={ v } /> < div > < Button > 제거 </ Button > </ div > </ div > )) } </ div > </ Form > ) }; export default PostForm ; 7. PostCard.js import React from ' react '; const PostCard = () => { return ( < div > PostCard </ div > ) ; }; export default PostCard ; 8. user.js import { HYDRATE } from ' next-redux-wrapper '; // initialState 부분 const initialState = { user : { isLoggedIn : false , user : null, signUpData : {}, loginData : {}, }, post : { mainPosts : [] , } }; // [로그인] action creator export const loginAction = ( data ) => { return { type : ' LOG_IN ' , data , } }; // [로그아웃] action creator export const logoutAction = ( data ) => { return { type : ' LOG_OUT ' , } }; // reducer const rootReducer = ( state = initialState , action ) => { switch ( action . type ) { case HYDRATE : console . log ( ' HYDRATE ' , action ) ; return { ... state , ... action . payload }; case ' LOG_IN ' : return { ... state , user : { ... state . user , isLoggedIn : true , user : action . data , }, }; case ' LOG_OUT ' : return { ... state , user : { ... state . user , isLoggedIn : false , user : null, }, }; default : return state ; } }; export default rootReducer ; 다소 많은 양의 글 내용이지만, 시간이 허락되실 때 답변 주시면, 참 감사할 것 같습니다! 오늘 하루도 고생많으셨고, 이번 한 주도 파이팅입니다! 늘 양질의 강의 감사합니다 ^^

  • react
  • redux
  • nodejs
  • express
  • Next.js
댓글 1 좋아요 0 조회수 567

메일발송이 되지 않습니다 ㅠㅠ // form.save()에 대하여 질문입니다.

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요? 1.이전에는 됐는데, 왜 다시할때는 안되는건지 모르겠네요 ㅠㅠ 11분경에 보내시는 메일이 발송이 되지 않습니다. 다음과 같이 1이 출력되면 메일이 발송성공한 것으로 알고 있는데, 기다려 보아도 메일이 오지를 않네요 강의 후반부에 회원가입과 동시에 메일을 보내는 부분도 메일이 발송되지가 않습니다 ㅠㅠ 2. 14분경에 views.py에서 signup함수 내부에 form.save()를 signed_user = form.save()로 바꿔주시는데, form.save()라는 함수가 값들을 실질적으로 db에 저장하는 것으로 알고 잇습니다. 그러면 signed_user = form.save()로 받아주는 부분은 해당 데이터를 db에 저장하는 동시에 저장된 그 유저 인스턴스(데이터 한행)를 변수에 담는 것인가요? 좋은 강의 감사합니다

  • python
  • docker
  • django
  • react
김영빈 댓글 3 좋아요 0 조회수 536

와.. 여기서 1도 못하겠어요 ㅠㅠ

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

버전이 달라서 그런지 인터페이스도 다르고 메뉴도 다른 것 같아요 AVD Manager도 보이지 않고요 ㅠ 어떻게 해야 할지 모르겠습니다

  • tensorflow
  • javascript
  • HTML/CSS
  • react
  • nodejs
  • express
  • 머신러닝 배워볼래요?
  • react-native
LeeGunWoo 댓글 2 좋아요 0 조회수 248

테스트케이스 2번

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

두번째 테스트 케이스에서 왜 답이 3번 학생인지 이해되지 않습니다! 3번 학생은 같은 반 해본 적이 2회 뿐인데 왜 3회 해본 4번 학생이 아닌 3번 학생이 답인가요? 5 9 8 7 6 5 : 1회 5 6 7 8 9 : 1회 1 2 3 7 8 : 2회 4 5 3 4 2 : 3회 6 2 8 4 2 : 3회

  • java
  • 코테 준비 같이 해요!
불응불응 댓글 1 좋아요 2 조회수 242

onCreate 이후 property 의 undefind 에러

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

add 후에 List페이지로 이동하면, 흰화면으로 에러가 출력됩니다. Home.js 의 프로퍼티에 대해 undefind 가 출력됩니다. [Uncaught TypeError: Cannot read properties of undefined (reading 'length') at Home.js:15:1] [ diaryList.length >= 1 ] : 에러 발생하는 부분 useEffect (() => { if ( diaryList . length >= 1 ) { //에러발생부분 const firstDay = new Date ( curDate . getFullYear (), curDate . getMonth (), 1 ). getTime (); const lastDay = new Date ( curDate . getFullYear (), curDate . getMonth () + 1 , 0 ). getTime (); setData ( diaryList . filter (( it ) => firstDay <= it . date && it . date <= lastDay ) ); } }, [ diaryList , curDate ]);

  • Home.js
  • javascript
  • property
  • nodejs
  • undefind
  • length
  • react
gwi01304 댓글 2 좋아요 0 조회수 417

질문이 있습니다~

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

안녕하세요 선생님! 질문 드릴게 있습니다. 처음부터 setState에서 로직을 처리하는게 아닌 아래와 같이 onUpdate 함수에서 msgs를 splice를 하여 updateMsg에 할당해주고 setMsgs((msgs) => [updateMsg, ...msgs]) 수정된 updateMsg를 바꾸어주고 기존의 존재했던 state값을 스프레드 연산자로 코드를 작성하였습니다! 해당 리스트가 삭제되긴 하지만 msgItem이 계속 쌓이고 있는 부분이 있습니다. 어떤 부분이 문제인지 알고싶습니다!

  • react
  • graphql
  • rest-api
bj2525 댓글 2 좋아요 0 조회수 229

MemberForm에서는 Setter가 강제되는건가요??

미해결

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

안녕하세요! 강의 도중 궁금한 점이 생겨 질문드립니다. form의 입력값들을 객체에 세팅할 때 setter를 쓰는걸로 알고있습니다! 아래 코드 처럼요 < input type ="text" th :field =" *{ name } "> -> memberForm.setName(input의 입력값); 영한님이 setter를 열어두는 것은 위험하다고 하셨는데 form 태그에 들어가는 정보와 관련된 필드를 가진 객체를 사용할 때는 setter를 반드시 열어둬야 하는건가요? MemberForm의 @Setter를 지우고 실행하면 form 필드의 값이 전부 null이 찍힙니다!

  • 웹앱
  • spring
  • spring-boot
  • java
  • JPA
나 좀 도와줘요 댓글 1 좋아요 0 조회수 439

인기 태그

인프런 TOP Writers

주간 인기글