Skip to content

QueryDSL에서 MySQL 커스텀 함수 이슈 #57

@CHISANW

Description

@CHISANW

스프링 3.0환경에서 match().aginst() 커스텀 함수 사용 이슈

개요

  • queryDsl에서는 사용자 정의 함수를 사용할 수 없기때문에 직접 등록해야하는 이슈가 발생

해결 방법

[MySQL클래스 작성]

public class CustomMySQLDialect implements FunctionContributor {
    
    private static final String FUNCTION_PATTERN = "match (?1) against (?2 in boolean mode)";
    @Override
    public void contributeFunctions(FunctionContributions functionContributions) {
        BasicType<Double> resultType = functionContributions
                .getTypeConfiguration()
                .getBasicTypeRegistry()
                .resolve(StandardBasicTypes.DOUBLE);

        functionContributions.getFunctionRegistry()
                .registerPattern("match",FUNCTION_PATTERN,resultType);
    }
}

[Config 작성]

@Configuration
public class HibernateConfig{
    @Bean
    public FunctionContributor customFunctionContributor() {
        return new CustomMySQLDialect();
    }
}

[파일 작성]

/resources/META-INF/services/org.hibernate.boot.model.FunctionContributor

team9499.commitbody.global.config.CustomMySQLDialect

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

공지

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions