Mi requisito es que necesito para llamar a la función oráculo de aplicación de inicio de primavera sin usar consulta nativa.
a continuación es mi función de Oracle que se está llevando fecha como entrada
create or replace FUNCTION todate(src_dt IN date)
RETURN date
is
BEGIN
RETURN(to_date(src_dt));
END;
yo estaba buscando solución en Internet, pero hasta el momento no nos't encuentro. la gente está diciendo alguna necesidad dialecto personalizado para crear pero no encontraron ningún paso perfecto por el enlace de paso.
a continuación es mi código java: -
Query query1 = entityManager.createQuery("select todate(ActSubT.createdDt) from ActSubT ActSubT");
List<Object> result=query1.getResultList();
este código debe correr, a partir de ahora su error dando como todate es función de Oracle y no he configurado nada en application.yml archivo.
a continuación el error que estoy recibiendo
java.lang.IllegalArgumentException: org.hibernate.QueryException:
No data type for node:
org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'todate' {originalText=todate}
Por favor ayuda
Soy capaz de resolver mi problema.
Paso 1: - he creado dialecto costumbre, a continuación es mi código ..
public class CustomDialect extends Oracle12cDialect {
public CustomDialect() {
super();
// CustomFunction implements SqlFunction
// registerFunction("custom_function", new CustomFunction());
// or use StandardSQLFunction; useful for coalesce
registerFunction("todate", new StandardSQLFunction("todate", StandardBasicTypes.DATE));
}
}
Paso 2: - ahora yo estoy llamando a la función estrictas disponibles, a continuación es el código Java
Query query1 = entityManager.createQuery("select function('todate',ActSubT.createdDt) from ActSubT ActSubT where ActSubT.id=1105619");
Object resulth=query1.getSingleResult();
Paso 3: - esta entrada tenemos que poner en application.poperties / application.yml
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = com.sbill.app.config.CustomDialect
Eso es todo ahora puedo llamar db función con el código de Java.