Si tuviera que definir de alguna función en la base de datos (tal vez Postgres, o cualquier otra base de datos):

create or replace function isValidCookie(ckie);

Yo diría que es de SQL como:

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

¿Cómo puedo llamar a una función personalizada como esta de Hibernar?

Sé que usted puede utilizar una vista como si se tratara de una tabla (sólo tienes que utilizar mutable en el xml), pero para llamar a una función que sería muy útil

OriginalEl autor jsight | 2009-12-15

3 Comentarios

  1. 13

    Si desea utilizar la función personalizada en HQL, deberá definir en adecuadas Dialecto

    Echa un vistazo a PostgreSQLDialect (o cualquier otro, la verdad) de la fuente, y usted verá un montón de registerFunction() llamadas. Tendrás que añadir uno más 🙂 – para su propia función personalizada.

    Entonces tendrás que especificar su propio dialecto en la configuración de Hibernate.

    OriginalEl autor ChssPly76

  2. 3

    Como de Hibernación 5, si no queremos depender de o personalizar el dialecto, se puede definir un MetadataBuilderInitializer. Por ejemplo, el uso de MySQL DATE_ADD con un INTERVAL de HQL, puede definir una función personalizada llamada 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)"));
        }
    }

    También habría que poner el nombre de la clase en un FRASCO de recursos archivo llamado META-INF/services/org.hibernate.boot.spi.MetadataBuilderInitializer.

    Este enfoque es particularmente útil cuando se utiliza Hibernate a través de un marco como JPA y/o de la Primavera, donde la configuración se realiza de forma implícita por el marco.

    Hey necesito exactamente esta característica para apoyar a Mariadb COLUMN_GET y TIMESTAMPDIFF funciones. Actualmente hibernate intenta prefijo de los parámetros de la función con la consulta alias. Donde tengo que registrar estas clases en la Primavera de Arranque?

    OriginalEl autor Trevor Robinson

Dejar respuesta

Please enter your comment!
Please enter your name here