복붙노트

[SQL] 당신은 어떻게 최대 절전 모드로 사용자 지정 데이터베이스 함수를 호출 할 수 있습니까?

SQL

당신은 어떻게 최대 절전 모드로 사용자 지정 데이터베이스 함수를 호출 할 수 있습니까?

나는 데이터베이스 (아마도 포스트 그레스, 또는 다른 데이터베이스)에서 일부 함수를 정의한다면 :

create or replace function isValidCookie(ckie);

I는 SQL에서 호출 할 것입니다 :

select * from cookietable c where isValidCookie(c.cookie);

어떻게는 최대 절전 모드에서이 같은 사용자 정의 함수를 호출 할 수 있습니다?

해결법

  1. ==============================

    1.당신은 HQL에서 사용자 정의 기능을 사용하려면 적절한 사투리를 정의해야합니다

    당신은 HQL에서 사용자 정의 기능을 사용하려면 적절한 사투리를 정의해야합니다

    ()를 호출 PostgreSQLDialect (또는 다른, 정말) 소스에서 봐, 당신은 registerFunction의 무리를 볼 수 있습니다. 사용자 정의 함수 - 당신은 :-) 하나 더 추가해야합니다.

    그런 다음 최대 절전 모드 구성에서 자신의 방언을 지정해야합니다.

  2. ==============================

    2.최대 절전 모드 5, 당신은에 따라 또는 방언, 당신이 MetadataBuilderInitializer를 정의 할 수 있습니다를 사용자 정의하지 않으려면. 예를 들어, HQL에서 간격으로 MySQL을 DATE_ADD를 사용하려면 date_add_interval라는 사용자 정의 함수를 정의 할 수 있습니다 :

    최대 절전 모드 5, 당신은에 따라 또는 방언, 당신이 MetadataBuilderInitializer를 정의 할 수 있습니다를 사용자 정의하지 않으려면. 예를 들어, HQL에서 간격으로 MySQL을 DATE_ADD를 사용하려면 date_add_interval라는 사용자 정의 함수를 정의 할 수 있습니다 :

    public class DateAddIntervalMetadataBuilderInitializer
            implements MetadataBuilderInitializer {
        @Override
        public void contribute(MetadataBuilder metadataBuilder,
                StandardServiceRegistry serviceRegistry) {
            metadataBuilder.applySqlFunction("date_add_interval",
                new SQLFunctionTemplate(DateType.INSTANCE,
                    "DATE_ADD(?1, INTERVAL ?2 ?3)"));
        }
    }
    

    또한 / 서비스 / org.hibernate.boot.spi.MetadataBuilderInitializer META-INF라는 JAR 자원 파일의 클래스의 이름을 넣어해야합니다.

    구성이 프레임 워크에 의해 내재적으로 수행되어, JPA 및 / 또는 스프링 등의기구를 통해 절전 모드를 사용하는 경우이 방법이 특히 유용하다.

  3. from https://stackoverflow.com/questions/1909315/how-can-you-call-custom-database-functions-with-hibernate by cc-by-sa and MIT license