Пытается переопределить Oracle10gDialect и добавить функции над и разделением. Я прочитал на hibernate.org о том, как переопределить диалект. Я использую Hibernate 4.1.7.Final и не могу обновить. Я реализовал его как указано, однако я получаю эту ошибку.Критерии спящего режима с аналитической функцией оконного анализа Oracle
15:21:21,353 WARN SqlExceptionHelper:143 - SQL Error: 907, SQLState: 42000
[10/8/13 15:21:21:354 CDT] 00000021 SystemOut O ORA-00907: missing right parenthesis
[10/8/13 15:21:21:354 CDT] 00000021 SystemOut O 15:21:21,354 ERROR SqlExceptionHelper:144 - ORA-00907: missing right parenthesis
Вот класс, который я строить:
package com.edmann.util;
import org.apache.log4j.Logger;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.function.StandardSQLFunction;
/**
* Because i need some analytic functions i am going to extend the
* oracle10gDialect so i can register my functions i want to use.
*
* @author Edward Mann
*
*/
public class Oracle10gDialectExtended extends Oracle10gDialect {
// get log4j handler
private static final Logger LOG = Logger
.getLogger(Oracle10gDialectExtended.class);
/**
* Override registerFunctions so that we can register the ones we want to
* use, then we will call the registerFunctions from the parent class.
*
*/
@Override
protected void registerFunctions() {
LOG.info("Trying to register custom functions");
registerFunction("over", new StandardSQLFunction("over"));
registerFunction("partition", new StandardSQLFunction("partition"));
super.registerFunctions();
}
}
Вот моя запись в моем файле hbm.xml:
<property name="rank" type="integer" formula="(ROW_NUMBER() over(partition by ENTRY_NUMBER ORDER BY ENTRY_DATE DESC))"/>
Проблемой я имею держу зимую от добавления это_. к разделу. В теме форума hibernate, с которой я связан, последней записью был человек, имеющий ту же проблему. Я не уверен, возможно ли это с помощью Hibernate Criteria.
Спасибо за любую помощь.
Update: Я нашел мой ответ я добавил
registerKeyword("partition");
К моему Oracle10gDialectExtended класса в методе registerFunctions и теперь он работает, как ожидалось.