El problema reside en que es una petición a posteriori de la creación de la
aplicación, y todas las consultas las hacemos por criteria, el trabajo que
conlleva realizar una modificación en todas y cada una de las consultas y
subconsultas para codificarlas a HQL para un único cliente en concreto me
parece que no era la opción adecuada.

En su lugar (fallo mio por no haber contestado antes) lo que he hecho ha
sido crear un interceptor, capturar la sentencia antes de que la mande a la
base de datos y "parsear" ese SqlString poniendo el "toolkit.decrypt" en
los nombres de las columnas. Si la respuesta os llama la atención y os
parece una solución acertada puedo poner el interceptor por aquí.

.-Salu2-.

El 1 de marzo de 2012 15:20, Dario Quintana
<[email protected]>escribió:

> Eso lo podés trabajar con HQL de manera facil
>
> http://nhforge.org/blogs/nhibernate/archive/2009/03/13/registering-freetext-or-contains-functions-into-a-nhibernate-dialect.aspx
>
> 2012/2/23 frikinside <[email protected]>
>
>> Hola, muy buenas.
>>
>> Llevo trabajando con NHibernate algún tiempo y recientemente me ha
>> surgido una duda...
>> Tengo que encriptar el contenido completo de una base de datos oracle,
>> y por supuesto, es deseable la posibilidad de hacer likes en las
>> cadenas de texto aunque estén encriptadas.
>>
>> Muy a mi pesar las encriptaciones transparentes no permiten ese like,
>> ya que se realizan después de la consulta, eso si, son muy cómodas al
>> definir un usertype de encriptación, es "automático". No obstante, no
>> suple mis necesidades actuales. Por tanto habría que hacerlo desde la
>> base de datos, despues de hacer unas pruebas y demás, cree unos
>> triggers en la base de datos para el insert y update con lo que cuando
>> recibe un insert, introduzco los datos directamente encriptados, ahora
>> bien, soy incapaz de crear un trigger para el select, al parecer no se
>> puede. Con lo que tendría que utilizar sentencias "personalizadas".
>> Ahora bien, es un proyecto de grandes dimensiones, donde todas las
>> consultas se realizan con criteria, ninguna con HQL ni SQL, por lo que
>> no tengo una cadena a la que "meterle mano". Habría algún modo de
>> decirle a NHibernate que me utilice una función en el campo a la hora
>> de hacer un select?
>>
>> Por ejemplo, si yo hago un Get(Dictionary condiciones) donde
>> condiciones sea {"Nombre","Pepe"}, la SQL que me crearía nhibernate
>> (no exactamente, pero se entiende igual) sería:
>>
>> Select Nombre FROM tabla WHERE Nombre='Pepe';
>>
>> Para poder realizar likes y desencriptar los datos para hacer las
>> select desde la base de datos, mis consultas deben llevar el siguiente
>> formato:
>>
>> Select toolkit.decrypt(Nombre) FROM tabla WHERE
>> tollkit.decrypt(Nombre) = 'Pepe';
>>
>> Por lo que me pregunto si hay algún modo con NHibernate (que no Fluent
>> NHibernate) de indicarle mediante criteria que el nombre de la columna
>> debe de llevar el llamamiento a dicho procedimiento? Es decir, se
>> puede indicarle a NHIbernate que "ColumName" =
>> "toolkit.decrypt(ColumName)" para las select?
>>
>> GRACIAS de antemano.
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
>
>
> --
> Dario Quintana
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano




-- 
.-Salu2-.

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a