[SQL] 당신은 어떻게 최대 절전 모드로 사용자 지정 데이터베이스 함수를 호출 할 수 있습니까?
SQL당신은 어떻게 최대 절전 모드로 사용자 지정 데이터베이스 함수를 호출 할 수 있습니까?
나는 데이터베이스 (아마도 포스트 그레스, 또는 다른 데이터베이스)에서 일부 함수를 정의한다면 :
create or replace function isValidCookie(ckie);
I는 SQL에서 호출 할 것입니다 :
select * from cookietable c where isValidCookie(c.cookie);
어떻게는 최대 절전 모드에서이 같은 사용자 정의 함수를 호출 할 수 있습니다?
해결법
-
==============================
1.당신은 HQL에서 사용자 정의 기능을 사용하려면 적절한 사투리를 정의해야합니다
당신은 HQL에서 사용자 정의 기능을 사용하려면 적절한 사투리를 정의해야합니다
()를 호출 PostgreSQLDialect (또는 다른, 정말) 소스에서 봐, 당신은 registerFunction의 무리를 볼 수 있습니다. 사용자 정의 함수 - 당신은 :-) 하나 더 추가해야합니다.
그런 다음 최대 절전 모드 구성에서 자신의 방언을 지정해야합니다.
-
==============================
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 및 / 또는 스프링 등의기구를 통해 절전 모드를 사용하는 경우이 방법이 특히 유용하다.
from https://stackoverflow.com/questions/1909315/how-can-you-call-custom-database-functions-with-hibernate by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server 2008의 페이징 방법? (0) | 2020.05.02 |
---|---|
[SQL] 어떻게 파일에 이미지 필드를 내보내려면? (0) | 2020.05.02 |
[SQL] 어떻게 ResultSet의 자바 폐쇄 예외는 피할 수있다? (0) | 2020.05.02 |
[SQL] 선택하지 않고 직접 업데이 트를 생성하기 위해 LINQ를 사용하여 (0) | 2020.05.02 |
[SQL] 합니까 끝 가까운 오픈 SQL 연결을 사용하여 (0) | 2020.05.02 |