반응형

오류

QueryDSL적용중 QuerySyntaxException: {Entity} is not mapped 오류 발생
원인을 찾기 위해 이것 저것 찾아보고 별걸 다 해보다가 포기..
다음날 맑은 정신으로 보니 바로 보이는 문제점..

원인

결론부터 말하면 Multi Datasource구성 때문이였다

  • 쿼리를 만들 때 사용하는 JPAQueryFactory에서 EntityManager를 사용하는데 이때 기본으로 primary Datasource의 EntityManager를 사용한다.
    primary EntityManager에서  secondary의 entity 조회하는 요청을 받다보니 발생하던 오류였던것
    • gradle 설정부터 property 설정 repositoryImpl 다시 구현 등등.. 해봐도 해결이 안됨
    • secondary Datasource를 먼저 queryDSL로 변경하다보니 본인이 뭘 잘못 설정한게 아닐까 하는 생각으로 다른곳에서 원인을 찾고 있었다.

 

해결 방법

- Multi Datasource 구성에서는 datasource별로 다른 EntityManager를 사용하기 때문에
   각 datasource의 EntityManager로 JPAQueryFactory를 빈으로 등록

- RepositoryImpl.java에서도 올바른 JPAQueryFactory를 가져다가 사용 

QueryDslConfig.java

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Configuration
public class QueryDslConfig {


    @PersistenceContext(unitName = "firstEntityManager")
    private EntityManager firstEntityManager;

    @PersistenceContext(unitName = "secondaryEntityManager")
    private EntityManager secondaryEntityManager;

    @Primary
    @Bean
    public JPAQueryFactory firstJpaQueryFactory() {
        return new JPAQueryFactory(firstEntityManager);
    }

    @Bean("secondaryJpaQueryFactory")
    @Qualifier("secondaryJpaQueryFactory")
    public JPAQueryFactory secondaryJpaQueryFactory() {
        return new JPAQueryFactory(thirdEntityManager);
    }

}

??RepositoryImpl.java

@Repository
public class ??RepositoryImpl implements ??Repository {

    private final JPAQueryFactory secondaryJpaQueryFactory;

    public ??RepositoryImpl(@Qualifier("secondaryJpaQueryFactory") JPAQueryFactory secondaryJpaQueryFactory) {
        this.secondaryJpaQueryFactory = secondaryJpaQueryFactory;
    }
...
}

 

build.gradle 설정

plugins {
...
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"

}

...

dependencies {
...
	implementation "com.querydsl:querydsl-jpa"
...
}
...
/*
 * queryDSL 설정 추가
 */
// queryDSL에서 사용할 경로 설정
def queryDlsDir = "$buildDir/generated/querydsl"

// queryDSL 설정 블록
// QueryDSL 설정 블록에서는 JPA 사용 여부와 QueryDSL 소스 코드를 생성할 디렉토리를 지정
// - jpa = true: JPA 엔터티를 기반으로 QueryDSL 클래스를 생성할 것임을 나타냄
// - querydslSourcesDir = querydslDir: QueryDSL 소스 코드를 저장할 디렉토리를 설정.
querydsl {
	jpa = true
	querydslSourcesDir = queryDlsDir
}
// SourceSet 설정: 소스셋에 QueryDSL 디렉토리를 추가하여 빌드 시 해당 디렉토리의 소스 코드가 컴파일되도록 함
sourceSets {
	main.java.srcDir queryDlsDir
}
// configurations 설정
// - compileOnly 구성에 annotationProcessor를 추가하여 annotation processor를 컴파일 시에만 사용하도록 설정
// - querydsl.extendsFrom compileClasspath: QueryDSL이 컴파일될 때 compileClasspath를 상속하도록 설정
//   이는 QueryDSL이 프로젝트 내의 다른 클래스 및 의존성을 참조할 수 있게 
configurations {
	querydsl.extendsFrom compileClasspath
}
// compileQuerydsl 설정
// - QueryDSL을 컴파일할 때 필요한 옵션을 설정
//   여기서는 annotationProcessorPath를 설정하여 QueryDSL의 annotation processor를 사용하도록 
compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}
반응형
반응형

 

  Install the plugIn 

npm install --save v-tooltip

 

  Code

// Javascript
import Vue from 'vue'
import VTooltip from 'v-tooltip'

Vue.use(VTooltip)

new Vue({
  data: {
    msg: 'This is a button.'
  }
})

 

<!-- HTML -->
<button v-tooltip.top-center="msg">Hover me</button>

 

/* scss */
.tooltip {
  display: block !important;
  z-index: 10000;

  .tooltip-inner {
    background: black;
    color: white;
    border-radius: 16px;
    padding: 5px 10px 4px;
  }

  .tooltip-arrow {
    width: 0;
    height: 0;
    border-style: solid;
    position: absolute;
    margin: 5px;
    border-color: black;
  }

  &[x-placement^="top"] {
    margin-bottom: 5px;

    .tooltip-arrow {
      border-width: 5px 5px 0 5px;
      border-left-color: transparent !important;
      border-right-color: transparent !important;
      border-bottom-color: transparent !important;
      bottom: -5px;
      left: calc(50% - 5px);
      margin-top: 0;
      margin-bottom: 0;
    }
  }

  &[x-placement^="bottom"] {
    margin-top: 5px;

    .tooltip-arrow {
      border-width: 0 5px 5px 5px;
      border-left-color: transparent !important;
      border-right-color: transparent !important;
      border-top-color: transparent !important;
      top: -5px;
      left: calc(50% - 5px);
      margin-top: 0;
      margin-bottom: 0;
    }
  }

  &[x-placement^="right"] {
    margin-left: 5px;

    .tooltip-arrow {
      border-width: 5px 5px 5px 0;
      border-left-color: transparent !important;
      border-top-color: transparent !important;
      border-bottom-color: transparent !important;
      left: -5px;
      top: calc(50% - 5px);
      margin-left: 0;
      margin-right: 0;
    }
  }

  &[x-placement^="left"] {
    margin-right: 5px;

    .tooltip-arrow {
      border-width: 5px 0 5px 5px;
      border-top-color: transparent !important;
      border-right-color: transparent !important;
      border-bottom-color: transparent !important;
      right: -5px;
      top: calc(50% - 5px);
      margin-left: 0;
      margin-right: 0;
    }
  }

  &[aria-hidden='true'] {
    visibility: hidden;
    opacity: 0;
    transition: opacity .15s, visibility .15s;
  }

  &[aria-hidden='false'] {
    visibility: visible;
    opacity: 1;
    transition: opacity .15s;
  }
}

 

  실행 결과

 

반응형
반응형

 자바 환경변수 설정

안녕하세요. 이번 글에서는 자바를 사용하기 위해 가장 먼저 진행했어야 했던 JDK 환경변수를 설정하는 방법을 소개하도록 하겠습니다.

순서는 설치 그리고 환경변수 설정 순으로 진행됩니다.

 

준비물

  • JDK 파일
  • 오라클 계정

우선 환경변수를 설정하기 위해선 JDK 파일이 필요합니다.
최신 버전은 JDK 21 버전까지(2023.10.12 기준) 나왔지만 최적화와 안정화가 잘돼 있는 JDK1.8 버전을 설치하겠습니다.

오라클 계정은 라이선스 동의 및 다운로드를 위해 필요합니다.

 

설치

JDK를 설치하기 위해 Oracle 공식 홈페이지로 이동하겠습니다.

https://www.oracle.com/java/technologies/downloads/

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

처음 접속 화면입니다. Java 최신 버전이 나오고 있습니다.


아래로 내려서  Java SE 8u381(2023.10.12 기준) 버전을 찾아보도록 하겠습니다.

사진과 같이 Java SE 8u341버전을 찾게되면 화면에 나오는 표에서

자신의 OS를 선택 후 다운로드를 클릭해주세요.
* ex) 윈도우 64비트: Windows탭으로 이동, x64 Installer 설치
* 다운로드를 진행 하기 위해선 오라클 라이선스 동의 오라클 계정이 있어야 합니다.

라이선스 동의 후 활성화되는 다운로드 버튼을 클릭
->
로그인 페이지로 이동해 오라클 계정으로 로그인해주시면 다운로드가 시작 됩니다.

 

설치가 완료되면 아래와 같은 파일을 확인할 수 있습니다.

해당 파일을 실행해 설치를 진행해 주세요
(경고: 상위 폴더에 한글이 들어가지 않도록 해주세요)

 

설치가 완료되고 경로를 변경하지 않았다면
C:\Program Files\Java 위치에 폴더가 생겨있습니다

 

설정 하기

이제 환경변수를 설정하기 위한 준비가 끝났습니다.

내 PC에 들어가 마우스 우클릭을 통해 속성 창으로 들어가겠습니다.

속성 창을 띄우고 좌측 탭에서 고급 시스템 설정 - 환경 변수를 선택해 주세요.

 

환경 변수 창에서 시스템 변수(S)-새로 만들기(W)를 클릭해

변수 이름 JAVA_HOME 

변수 값 JDK가 설치된 경로를 입력해 주세요

저는 C:\Program Files\Java 경로에 jdk1.8.0_211 버전이 설치되어 있기 때문에 아래와 같이 입력했습니다.

JAVA_HOME이 추가된 모습

JAVA_HOME이 만들어졌다면

PATH 변수%JAVA_HOME%\bin추가시켜주면 됩니다.

PATH 변수가 이미 만들어저 있다면 더블클릭해 수정, 이때 창은 두가지 형태로 표시됨

 

첫번째 형태일 경우라면 변수 값 마지막 위치에 ;(세미콜론)을 붙이고 %JAVA_HOME%\bin추가

두번째 형태일 경우 새로 만들기 버튼을 클릭 후 %JAVA_HOME%\bin을 추가

확인 버튼을 클릭해 마무리 하겠습니다.

 

환경변수가 제대로 설정되었는지 확인하기 위해 시작-검색-cmd 창을 열어 java -version을 입력
환경변수에 설정한 java 버전이 나오게 되면 성공입니다!

 

 

감사합니다.

 

반응형

+ Recent posts