Hola,
Me estoy peleando para que me funcione la ejecución de una sequencia
de Oracle en NH 2.0 y no hay forma.
He probado tanto con el driver de .NET como con el de ORACLE y me da
el mismo error.
El error es: could not instantiate id generator
El mapeo de la clase es:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
lazy="false">
<class name="DUN.Core.Domain.Entities.SigPac.SigpacArbres, DUN.Core"
table="SIGPAC_ARBRES" lazy="false" >
<id name="ID" column="ID" type="System.Int64">
<generator class="sequence">
<param name="sequence">SECUENCIA</param>
</generator>
</id>
<property name="CodiArbres" column="CODI_ARBRES"/>
<property name="IdRecinte" column="ID_RECINTE" />
<property name="NumArbres" column="NUM_ARBRES" />
</class>
</hibernate-mapping>
Qué puede ser???
mUCHAS GRACIAS
On 21 sep, 17:28, Fabio Quintero <[email protected]> wrote:
> Bueno amigos, resulta que estoy haciendo dos proyectos en este
> momento. Para el primero estoy utilizando SQL Server y no he tenido
> ningún tipo de problema con la base de datos.
>
> Pero resulta que para el segundo proyecto, por un requerimiento, es
> necesario implementarlo en Oracle. Yo suponía que la portabilidad de
> NHibernate me iba permitir pasar de SQL Server a Oracle sin mayores
> contratiempos, pero al hacerlo he tenido varios problemas, la mayoría
> ya resueltos, pero con serias inquietudes sobre el funcionamiento y
> comportamiento de NHibernate con diferentes motores de bases de datos.
>
> Lo primero que me pasó fue que tuve un inconveniente tratando de
> conectar NHibernate con Oracle, la configuración que utilicé fue la
> siguiente:
>
> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
> <session-factory>
> <property
> name="connection.provider">NHibernate.Connection.DriverConnectionProvider</
> property>
> <property name="dialect">NHibernate.Dialect.Oracle9Dialect</
> property>
> <property
> name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</
> property>
> <property
> name="connection.connection_string">Password=claveacceso;Persist
> Security Info=True;User ID=OraUsuario;Data Source=localhost</property>
> <property name="show_sql">true</property>
> <mapping assembly="proyecto_nuevo" />
> </session-factory>
> </hibernate-configuration>
>
> Pero me generaba una excepción en la que me decía que no encontraba la
> librería de Oracle, lo cual no podía estar pasando porque yo ya había
> agregado la referencia a la librería tanto en el proyecto del
> ensamblado como en el sitio web. Buscando por Internet descubrí que
> era un error generalizado (no creo que sea asunto de NHibernate) y se
> soluciona agregando el siguiente parámetro al archivo web.config en la
> sección Runtime->assemblyBinding y quedaría de la siguiente forma:
> <runtime>
> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
> <qualifyAssembly partialName="Oracle.DataAccess"
> fullName="Oracle.DataAccess, Version=2.111.7.20, Culture=neutral,
> PublicKeyToken=89b483f429c47342"/>
>
> En ese momento ya la aplicación se estaba conectando a la base de
> datos Oracle, pero ahora el problema era que me estaba generando una
> excepción de tipo ORA, la cual dice básicamente "La secuencia no
> existe". Revisando el tema descubrí que el asunto iba por el lado del
> mapeo, específicamente el Id Generator class que yo estaba utilizando,
> que curiosamente era "native" (según la documentación, este generador
> de Id funciona según el dialecto que uno haya seleccionado), por lo
> cual me tocó cambiarlo a "sequence". La sección del archivo de
> configuración de mapeo quedó así:
>
> <id name="Id">
> <generator class="sequence" />
> </id>
>
> Ahora el siguiente problema que tuve fue una excepción ORA, en la cual
> me notificaba que la tabla X no existía, lo cual me pareció extraño
> porque yo tengo un archivo global.asax, el cual actualiza el esquema
> cada vez que inicia la aplicación y me venia funcionando perfectamente
> con SQL Server. Básicamente el código que estaba utilizando es el
> siguiente:
> Dim configuracion As New Configuration
> configuracion.Configure()
> Dim esquema As New SchemaUpdate(configuracion)
> esquema.Execute(False, True)
> Lo utilizo porque me gusta que al hacer una actualización en las
> clases del dominio, automáticamente me actualice el esquema en la base
> de datos, cosa que me ha funcionado perfectamente en SQL Server 2005.
> Para que la aplicación automáticamente me cree el esquema, tuve que
> cambiar el SchemaUpdate por SchemaExport, el problema que tengo con
> este cambio, es que tengo que retirar esta linea una vez termine la
> aplicación, y la idea de utilizar el update es que sea una aplicación
> auto mantenible, por decirlo así.
>
> Básicamente estos son los problemas que he tenido hasta el momento,
> espero que le sirvan a alguien mas esta experiencia, y de paso espero
> que alguien me expliqué el por qué de alguno de estos comportamientos,
> por ejemplo el del por que no funciona el generador de Id "Native", o
> por qué el SchemaUpdate no tiene el mismo comportamiento que con SQL
> Server 2005.
>
> Gracias y pido excusas por lo extenso del mensaje.
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---