본문 바로가기
공부의/JAVA

DATA JPA 사용자 정의 함수 사용하기 , Dialect 정의 방법

by 포로리씨 2023. 3. 2.
728x90
반응형

DB : MSSQL / SQL Server

data jpa 사용자 정의 함수 사용하기

#application.properties

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.properties.hibernate.dialect=com.smple.service.admin.hibernate.dialect.SQLServerDialect
-- 사용자 정의 함수가 정의된 dialect java 파일의 경로를 정의합니다

 

#Dialect

public class SQLServerDialect extends SQLServer2012Dialect {
    public SQLServerDialect() {
        super();

        registerFunction("fn_functionName", new StandardSQLFunction("dbo.fn_functionName", StandardBasicTypes.STRING));
   		-- fn_functionName 사용자 정의 함수는 DB에서 정의
   }
}
#Repogitory

@Query(value = 
    "SELECT c, cast(fn_functionName(c.cd) as string) AS code " +
    "FROM entity c " +
    "WHERE 1=1 " +
    "AND c.created BETWEEN :startDate AND :endDate " )
    Page<Object[]> findAllWithfnFunctionName(
        @Param("startDate") LocalDateTime startDate,
        @Param("endDate") LocalDateTime endDate,
        Pageable pageable);

 

아래와 같이 error 발생하는 경우 #application.properties의 경로가 Dialect.java와 일치하는지 확인 필요

 # 'fn_functionName'은(는) 인식할 수 없는 함수 이름입니다.

 

 

728x90
반응형