Buenos dias a todos:

En mi pruebas con NHibernate describi un error en mi código que en
principio atribuí a un error en NH ( http://216.121.112.228/browse/NH-2453
).

Básicamente el resumen es que tenia una columna en tabla llamada Key
que una tabla. Donde Key es una palabra reservada para SQL Server y
por tanto las consultas correctas SQL deben escapar correctamente Key
del siguiente modo por ejempo:  aliasDeTabla.[Key]   cuando por
contra, por defecto, NH me estaba generando:  aliasDeTabla.Key

Con la amable y pronta ayuda de Fabio Maulo, me indico que realmente
existe una manera de configurar NH para que funcione de este modo
empleando el parámetro:  <property name="hbm2ddl.keywords">auto-quote</
property>

Hasta aqui asunto resuelto. Falsa alarma de bug y mi código
funcionando de nuevo.

Sobre este tema les expongo una reflexión que adelantaba a Fabio y que
le pareció conveniente traer aquí para compartirla:

Como describe Fabio en su blog: 
http://fabiomaulo.blogspot.com/2009/06/auto-quote-tablecolumn-names.html
el valor por defecto para la propiedad hbm2ddl.keywords es: <property
name="hbm2ddl.keywords">keywords</property>

¿Tendria sentido marcar el valor por defecto en NH a auto-quote?
<property name="hbm2ddl.keywords">auto-quote</property>

Lo planteo porque como bien dice Fabio, un ORM debe ocultar los
detalles de persistencia y facilitar, en la medida de lo posible, el
cambio de la capa de persistencia de un motor relacional a otro con
cambios mínimos en el código y/o mapeos.
En este contexto, las palabras claves son arbitrariamente
seleccionadas por cada fabricante del motor relacional y se reservan
todo aquello que creen necesitar para un futuro.

La alternativa de hacer emerger la protección (o quotes) en el fichero
de mapping no me parece lo más limpio, por el mismo motivo recién
comentado (lo que es palabra reservada en un motor, o dialecto de SQL
no tiene porque serlo en otro diferente).

Bajo este punto de vista planteo: ¿tendría sentido que auto-quote
fuera el valor por defecto para hbm2ddl.keywords?

Seguro que hay otros pros/contras sobre este tema cuando se estableció
el valor por defecto, pero queria preguntar que opinan al respecto.

Gracias de antemano,

Pedro J. Molina

-- 
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