묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! Querydsl
jakarta 환경에서 javax 클래스패스로 entityManager를 찾고있습니다.
실행환경gradle 7.6.1java 17, jdk19spring boot 3.0.2제일 처음 환경을 설정한 후 테스트하는 코드에서 아래와 같은 로그가 발생합니다.java: cannot access javax.persistence.EntityManager class file for javax.persistence.EntityManager not found import static org.assertj.core.api.Assertions.*; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import study.querydsl.entity.Hello; import study.querydsl.entity.QHello; @SpringBootTest @Transactional class QuerydslApplicationTests { @Autowired EntityManager em; @Test void contextLoads() { Hello hello = new Hello(); em.persist(hello); //현재 컴파일 에러가 나고 있는 부분 JPAQueryFactory query = new JPAQueryFactory(em); //em에서 javax.persistence.EntityManager 클래스를 찾을 수 없다는 에러가 나고 있음. QHello qHello = new QHello("h"); Hello result = query .selectFrom(qHello) .fetchOne(); assertThat(result).isEqualTo(hello); } }import문까지 모두 jakarta로 해주고 있습니다. 정상적으로 Q타입클래스가 되어있는데 JPAQueryFactory 생성자 부분의 에러가 전혀 사라지지 않습니다.버전문제인가 싶어서 여러번 버전을 확인했는데도, 제가 확인한 바로는 버전 호환에서는 문제 될 것이 없어보입니다.dataJPA가 3.0.X버전이상에서는 hibernate를 6+버전으로 맞춰줘야한다고 해서 확인해본 결과 hibernate는 다음과 같습니다.org.hibernate.orm:hibernate-core:6.1.7.Final추가적으로 build.gradle 코드를 올려놓겠습니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' // == 스프링 부트 3.0 이상일 때, querydsl 의존성 == implementation "com.querydsl:querydsl-core:5.0.0" implementation "com.querydsl:querydsl-collections" implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api:3.1.0" testImplementation ('org.springframework.boot:spring-boot-starter-test') testImplementation 'jakarta.persistence:jakarta.persistence-api' testImplementation 'com.querydsl:querydsl-jpa:5.0.0' } tasks.named('test') { useJUnitPlatform() } //querydsl 세팅 시 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl }
-
해결됨코딩테스트 [ ALL IN ONE ]
while TypeError: argument of type 'int' is not iterable 에러 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 ~!파이썬 초보라 선생님 코드를 그대로 따라해 실행해보고 있는데요.def dict2(nums): # 가장긴 연속된변수를 여기다 저장할거임 longest = 0 dictionary = {} for num in nums: dictionary[num] = True for n in dictionary: # n보다 앞에 있는애가 있나? # 시작점 판별하는 조건문! if n-1 not in dictionary: cnt = 1 # 시작하면 일단 카운트1 target = n + 1 while target in n: # 연속된 값있는지! target += 1 # 다음 수 찾아야돼서 +1 cnt += 1 longest = max(longest, cnt) return longest nums = [100, 4, 200, 1, 3, 2] print(dict2(nums)) 코드실행시 다음과 같은 에러가 발생합니다.TypeError: argument of type 'int' is not iterable어떻게 해결해야될까요?그리고 max 함수가 최댓값을 가져온다고 하던데 longest가 어차피 0이면 max(cnt)만 해도 되지 않나요?
-
미해결데이터 분석 SQL Fundamentals
Dbeaver오류
안녕하세요, 강사님.다름이 아니라, 강사님과 코드를 동일하게 작성했음에도 불구하고dbeaver에서 데이터 결과값이 자꾸 나오지 않아 문의 드립니다.계속 아래에 데이터 없음이 뜨는 데 이를 어떻게 해결할 수 있을까요ㅜㅜ감사합니다.
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
외워야 할 단위 체계에서 의문점
안녕하세요 강사님! 강의 정말 잘 듣고 있습니다.다만 강의를 듣다가 한가지 의문점이 생겼습니다. ppt 16페이지, 외워야 할 단위 체계#2에서요,16비트는 65,536가지(64KB)이다. 라고 써있는데65,536에서 왜 갑자기 KB 단위가 나오나요? 1 KB = 1000Byte 인 점에서 64KB가 나온 것 같은데,지금은 경우의 수를 다루고 있는데 갑자기 여기서 byte가 왜 나오는지 이해가 안됩니다.저 말대로라면 16bit = 2byte 이니까16비트(2byte)는 65,536가지(64KB)이다. 즉, 2byte = 64KB 이다. 라고 해석이 됩니다...제가 어느 부분을 놓친걸까요 ... ㅠㅠ
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
요소들이 조금씩 다른데
두개 사진에 태그들이 조금 다른데어떤걸로 외우면되나요
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
누적합 심화 질문있습니다
안녕하세요 강사님 누적합 심화내용 관련해서 질문드립니다. 성능면에서는 3가지 방법 중 어떤게 가장 좋나요? 윈도우 함수 사용 > 셀프조인 > 서브쿼리 순일까요?
-
미해결Vue.js + TypeScript 완벽 가이드
두번째 프로젝트 권한 요청
두번째 프로젝트weotjqw@naver.com 권한 요청 드립니다 !
-
미해결그림으로 쉽게 배우는 운영체제
운영체제 교재
고생하십니다.운영체제에 해박한 지식을 갖고 있다는 걸 느껴서 그런데감자님께서 운영체제를 공부하실 때 어떤 책을 가지고 공부하셨고 시중에 나온 교재들 중에 추천해 주실 만한 교재가 있는지 알고 싶습니다!
-
미해결
Anaconda navigator - Jupyter notebook 실행에러
C:\anaconda_\lib\site-packages\jupyter_client\__init__.py:23: UserWarning: Could not import submoduleswarnings.warn("Could not import submodules")Traceback (most recent call last):File "C:\anaconda_\Scripts\jupyter-notebook-script.py", line 6, in from notebook.notebookapp import mainFile "C:\anaconda_\lib\site-packages\notebook\notebookapp.py", line 78, in from .services.kernels.kernelmanager import MappingKernelManager, AsyncMappingKernelManagerFile "C:\anaconda_\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 18, in from jupyter_client.session import SessionFile "C:\anaconda_\lib\site-packages\jupyter_client\session.py", line 32, in import zmqModuleNotFoundError: No module named 'zmq' 해결방법 알려주심 감사하겠습니다ㅠㅠ
-
해결됨그림으로 쉽게 배우는 운영체제
오버헤드 질문
운영체제의 역사 강의에서 오퍼레이터의 오버헤드 너무 컸다고 하셨는데여기서 오버헤드가 뭔 의미인가요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한요청드립니다!
인프런 아이디 : seajin97@g.shingu.ac.kr인프런 이메일 : seajin97@g.shingu.ac.kr깃헙 아이디 : seajin97@g.shingu.ac.kr깃헙 Username : simsimhang 한번 권한 받았었는데 시간이 지나니까 권한이 사라져있습니다
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
WebSecurityConfigurerAdapter deprecated 해결
@Bean public UserDetailsService userDetailsManager(BCryptPasswordEncoder bCryptPasswordEncoder){ InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withUsername("user") .password(bCryptPasswordEncoder.encode("userPass")) .roles("user") .build()); manager.createUser(User.withUsername("admin") .password(bCryptPasswordEncoder.encode("adminPass")) .roles("user", "admin") .build()); return manager; } @Bean public BCryptPasswordEncoder encodePassword(){ return new BCryptPasswordEncoder(); }
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
리액트랑 강의를 동시에 같이 진행해야하나요 ? ..
혹시 강의를 node react 동시에 같이 들어야하나요 ?? 노드강의만 먼저 순서대로 듣고있는데 갑자기 2분 15초경에 갑자기 유저모델까지 만들었다고 말씀해주시는데 노드 이전강의는 몽고DB연결만 한걸로 나와서요 ..
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
PersistenceException은 런타임 예외이지 않나요 ?
PersistenceException이 RuntimeException을 상속 받았던데 이러면 service 계층에서 처리 할 의무가 없으니 DataAcessException으로 변환하지 않아도 JPA예외에 의존하는 것이 아니지 않나요 ?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
서버에 코드를 올렸는데 mixed content에러 발생중입니다.
안녕하세요. 제로초님.우선 학습관련 내용이 아닌 내용에 대해 질문드리게 되어 죄송합니다.혹여 문제가 될 시 질문 글을 삭제하도록 하겠습니다.몇 일 동안 해결하려 했으나 해결이 잘 되지 않아 이 곳을 통해 질문드리게 되었습니다.fe작업물을 테스트 서버에 반영하였으나,로그인을 시도할 때 아래와 같은 에러가 발생중입니다.xhr.js:247 Mixed Content: The page at 'https://도메인주소/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://백엔드api주소'. This request has been blocked; the content must be served over HTTPS. 구글링을 해본 결과 메타 태그를 index.html에 삽입하라고 하여 삽입을 해보았으나,pending로 통신 자체가 불가능한 상황입니다.http-proxy-middleware 라이브러리를 사용하여 setproxy.js파일도 세팅을 해보았으나 여전히 위와 같은 문제가 발생중입니다..env 파일을 생성하여 백엔드 api를 프록시로 설정을 하였고, 프론트엔드 host도 지정을 하였는데 위와 같은 문제가 발생 중입니다. 도무지 해결이 되지 않아 여기 질문드린 점 다시 한번 사과드리겠습니다.혹여 문제가 되면 질문 글은 바로 삭제하도록 하겠습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
포맷터의 parse(), print()는 자동으로 사용되는 건가요?
4:39 부분 assertThat(conversionService.convert(1000, String.class)).isEqualTo("1,000");1000(객체) -> String 이므로 MyNumberFormatter에 parse()실행 assertThat(conversionService.convert("1000", Long.class)).isEqualTo(1000L);String -> 1000(Long) 이므로 MyNumberFormatter에 print 실행 위 코드에는 MyNumberFormatter에 있는 parse(), print()를 사용하는 곳이 없는데, 포맷터 사용의 경우 DefaultFormattingConversionService에 의해서 parse(), print()가 알아서 실행된다고 이해하면 될까요?
-
미해결스프링 시큐리티
ajax 인증 유지
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 security6로 ajax 로그인 구현을 따라하고 있습니다. 그런데 /api/login을 호출할 떄는 인증이 잘 되는데 그 후 /api/messages 를 호출하면 user, manager 둘다 항상 unauthorized로 나와서 보니 /api/messages를 호출할 때 securitycontext에 이전에 등록한 authentication을 찾을 수 없는데 원인과 해결방법을 찾을 수 없어 질문드립니다.githubhttps://github.com/jjoylee/security-demo/tree/master/src/main/java/com/example/securitydemo/security/config
-
해결됨스프링 핵심 원리 - 기본편
프록시, @PostConstruct
프록시 객체가 생성될 때 myLogger를 토대로 생성되서 DI까지 이뤄진다고 생각했습니다.DI가 이뤄진다는 것은 프록식 객체도 빈에 등록되는 것인데 왜 @PostConstruct는 작동이 안되는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
From 과 th:field
converter-form.html을 아래와 같이 작성<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> th:field <input type="text" th:field="${ipPort}"><br/> </form> </body> </html>converterForm을 아래와 같이 작성@GetMapping("/converter/edit") public String converterForm(Model model) { IpPort ipPort = new IpPort("127.0.0.1", 8080); model.addAttribute("ipPort", ipPort); return "converter-form"; }위와 같이 작성하고 실행하면,ipPort값이 출력이 되어야 할 것 같은데1. 아래와 같이 입력창 안에 아무 값도 나오지 않는 이유가 무었인지 궁금합니다. 2. 혹시 th:object="${form}"을 안쓰면 입력창 안에 텍스트가 나오게 할 수 없는 건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
router undefined로 인한 쿼리요청 실패
import NewBoard from "../../../../src/components/units/write/BoardWrite.container" import { useQuery, gql } from "@apollo/client" import { useRouter } from "next/router" const FETCH_BOARD = gql` query fetchBoard($boardId: ID!){ fetchBoard (boardId: $boardId) _id writer title contents } ` export default function editPage(props) { const router = useRouter() console.log("-------------------") console.log(router.query.detail) console.log("-------------------") const {data} = useQuery(FETCH_BOARD, { variables: { boardId : Number(router.query.detail) } }) console.log("++++++++++++++++++") console.log(data) console.log("++++++++++++++++++") console.log("###################################") return( <> <NewBoard isEdit={true} queryData = {data?.data?.fetchBoard}/> </> ) } 수정 페이지에서 라우터 안에 있는 보드 아이디로 쿼리 요청을 보내려 했는데 처음에는 router.query.detail이 undefined 상태로 있어서 그런지 오류가 나왔습니다 ㅜㅜ어떤 부분이 잘못된 걸까요..