Gracias Diego y Nestor. Me clarificaron el tema de porque tener que mapear MyDTO al usar SP.
Saludos ________________________________ From: Nestor Rodriguez <[email protected]> To: [email protected] Sent: Fri, November 5, 2010 4:28:06 PM Subject: Re: [NHibernate-Hispano] NHibernate + Store Procedure + NamedQuery I.M.H.O creo que no es necesario importar una interfaz para hacer un HQL, para hacer un Get sí. Las consultas polimorficas hechas en HQL o Criteria o etc... soportan hacer consultas sobre interfaces o clases no mapeadas. Si hago session.QueryOver<Object>().List() voy a obtener TODAS las instancias de mis entidades mapeadas sin necesidad de hacer el <Import> del System.Object. Para lo que si es necesario el <Import> es para cuando se requiere retornar instancias nuevas de tipos NO mapeados. MyDTO es el perfecto caso para usar <import>, sin embargo como lo estas combinando con SPs debes usar un "sql named query" y muchas de las habilidades de NHibernate se van al suelo. Es por esto que en tu caso fue necesario mapear por completo la entidad MyDTO ( cuyas propiedades deberian estar como insert='false' y update='false'). Si por el contrario no usaras un SP podrias hacer por ejemplo: session.CreateQuery<MyDTO>("select new MyDTO(p.Id, p.Name) from Person p"). Esto quiere decir que MyDTO debe tener un constructor que acepte un Id y un Name. Saludos, Nestor Rodriguez On Fri, Nov 5, 2010 at 1:09 PM, Diego Mijelshon <[email protected]> wrote: Es que "MyDTO" ESTA siendo persistida; que sea solo en una dirección (lectura) es un detalle. > > ><import> se usa, por ejemplo, si tenés una interface no mapeada y querés hacer >queries HQL utilizándola. También sirve para asignar distintos nombres a >clases >de diferences namespaces, para evitar calificarlas. >A fines prácticos, se usa muy poco. > > Diego > > > > >On Fri, Nov 5, 2010 at 14:59, Carlos Bustos <[email protected]> wrote: > >Hola. Gracias Diego !! >>Hice el mapping de la clase MyDTO y funcionó. Pensé que habia que declarar el >>mapping de una clase, en los casos que la clase necesite ser persistida. >>MyDTO >>solo contiene el resultado el resultado de una projection. >> >>Ahora, no me quedó claro cuando debe importarse una clase... voy a buscar >>sobre >>eso. >> >>Gracias >> >> >> >> ________________________________ From: Diego Mijelshon <[email protected]> >>To: [email protected] >>Sent: Fri, November 5, 2010 10:23:04 AM >>Subject: Re: [NHibernate-Hispano] NHibernate + Store Procedure + NamedQuery >> >> >><import> es sólo para que NHibernate "conozca" una clase y puedas emplearla >>en >>queries; no es suficiente para mapearla. >> >> Diego >> >> >> >>On Thu, Nov 4, 2010 at 22:04, Carlos Bustos <[email protected]> >wrote: >> >>Hola. Teng un problema al tratar de utilizar procedimientos almacenados con >>NHibernate . Mi procedimiento almacenado está declarado en una namedQuery. >> >>>Tanto el mapping del DTO como la namedQuery están marcadas con "Embedded >>>Resource" >>> >>>La excepción que obtengo es : >>>NHibernate.MappingException: No persister for: Muestra.Commons.DTO.MyDTO >>> >>>Cualquier clase de ayuda me sirve!! Muchas gracias. >>> >>>Este es el DTO: >>> >>> public class MyDTO >>> { >>> public MyDTO(DateTime fecha) >>> { >>> Fecha = fecha; >>> } >>> public DateTime Fecha { get; set; } >>> } >>> >>>El mapping del DTO : >>> >>><?xml version="1.0" encoding="utf-8" ?> >>><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>> assembly="Muestra.Commons" >>> namespace="Muestra.Commons.DTO"> >>> <import class="MyDTO"/> >>></hibernate-mapping> >>> >>>la namedQuery : >>> >>><?xml version="1.0" encoding="utf-8" ?> >>><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>namespace="Muestra.Commons.DTO" assembly="Muestra.Commons"> >>> <sql-query name="GetDTO" callable="true"> >>> <return alias="T1" class="MyDTO"> >>> <return-property name="Fecha" column="Fecha"/> >>> </return> >>> exec dbo.StoreProcedure >>> </sql-query> >>></hibernate-mapping> >>> >>> >>>El log completo : >>> >>> >>>INFO [7] (:0) - NHibernate 3.0.0.2001 (3.0.0.2001) >>>953 [7] INFO NHibernate.Cfg.Environment (null) - NHibernate 3.0.0.2001 >>>(3.0.0.2001) >>> >>> INFO [7] (:0) - hibernate-configuration section not found in application >>> configuration file >>> >>>1190 [7] INFO NHibernate.Cfg.Environment (null) - hibernate-configuration >>>section not found in application configuration file >>> >>> INFO [7] (:0) - Bytecode provider name : lcg >>>1193 [7] INFO NHibernate.Cfg.Environment (null) - Bytecode provider name : >>>lcg >>> INFO [7] (:0) - Using reflection optimizer >>>1198 [7] INFO NHibernate.Cfg.Environment (null) - Us ing reflection optimizer >>>DEBUG [7] (:0) - connection.connection_string_name=DevDb >>>2558 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>connection.connection_string_name=DevDb >>> >>>DEBUG [7] (:0) - dialect=NHibernate.Dialect.MsSql2000Dialect >>>2566 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>dialect=NHibernate.Dialect.MsSql2000Dialect >>> >>>DEBUG [7] (:0) - >>>current_session_context_class=NHibernate.Context.ThreadStaticSessionContext >>> >>>2568 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>current_session_context_class=NHibernate.Context.ThreadStaticSessionContext >>> >>>DEBUG [7] (:0) - >>>proxyfactory.factory_class=NHibernate.ByteCode.LinFu.ProxyFactoryFactory, >>>NHibernate.ByteCode.LinFu >>> >>>2569 [7] DEBUG NHibernate.Cfg.Configuration (null) - pro >>>xyfactory.factory_class=NHibernate.ByteCode.LinFu.ProxyFactoryFactory, >>>NHibernate.ByteCode.LinFu >>> >>>DEBUG [7] (:0) - generate_statistics=true >>>2571 [7] DEBUG NHibernate.Cfg.Configuration (null) - generate_statistics=true >>>DEBUG [7] (:0) - query.substitutions=true=1;false=0 >>>2572 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>query.substitutions=true=1;false=0 >>> >>>DEBUG [7] (:0) - >>>connection.provider=NHibernate.Connection.DriverConnectionProvider >>> >>>2573 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>connection.provider=NHibernate.Connection.DriverConnectionProvider >>> >>>DEBUG [7] (:0) - connection.driver_class=NHibernate.Driver.SqlClientDriver >>>2575 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>connection.driver_class=NHibernate.Driver.SqlClie >>> ntDriver >>>DEBUG [7] (:0) - adonet.batch_size=20 >>>2577 [7] DEBUG NHibernate.Cfg.Configuration (null) - adonet.batch_size=20 >>>DEBUG [7] (:0) - NHibernate.Test<-Muestra.Data >>>2579 [7] DEBUG NHibernate.Cfg.Configuration (null) - >>>NHibernate.Test<-Muestra.Data >>> >>> INFO [7] (:0) - Searching for mapped documents in assembly: Muestra.Data >>>2581 [7] INFO NHibernate.Cfg.Configuration (null) - Searching for mapped >>>documents in assembly: Muestra.Data >>> >>> INFO [7] (:0) - Mapping resource: Muestra.Data.Mappings.MyDTO.hbm.xml >>>2602 [7] INFO NHibernate.Cfg.Configuration (null) - Mapping resource: >>>Muestra.Data.Mappings.MyDTO.hbm.xml >>> >>> INFO [7] (:0)&nbs p;- Using dialect: NHibernate.Dialect.MsSql2000Dialect >>>6050 [7] INFO NHibernate.Dialect.Dialect (null) - Using dialect: >>>NHibernate.Dialect.MsSql2000Dialect >>> >>>DEBUG [7] (:0) - Import: MyDTO -> Muestra.Commons.DTO.MyDTO, Muestra.Commons >>>6280 [7] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder (null) - Import: MyDTO -> >>>Muestra.Commons.DTO.MyDTO, Muestra.Commons >>> >>> INFO [7] (:0) - Mapping resource: Muestra.Data.Queries.GetDTO.hbm.xml >>>6294 [7] INFO NHibernate.Cfg.Configuration (null) - Mapping resource: >>>Muestra.Data.Queries.GetDTO.hbm.xml >>> >>> INFO [7] (:0) - Using dialect: NHibernate.Dialect.MsSql2000Dialect >>>6377 [7] INFO NHibernate.Dialect.Dialect (null) - Using&n >>>bsp;dialect: NHibernate.Dialect.MsSql2000Dialect >>> INFO [7] (:0) - Configured SessionFactory: NHibernate.Test >>>6401 [7] INFO NHibernate.Cfg.Configuration (null) - Configured >>>SessionFactory: NHibernate.Test >>> >>>DEBUG [7] (:0) - properties: >>>System.Collections.Generic.Dictionary`2[System.String,System.String] >>> >>>6405 [7] DEBUG NHibernate.Cfg.Configuration (null) - properties: >>>System.Collections.Generic.Dictionary`2[System.String,System.String] >>> >>> INFO [7] (:0) - checking mappings queue >>>6434 [7] INFO NHibernate.Cfg.Configuration (null) - checking mappings queue >>> INFO [7] (:0) - processing one-to-many association mappings >>>6437 [7] INFO NHibernate.Cfg.Configuration (null)  >>>;- processing one-to-many association mappings >>>DEBUG [7] (:0) - Named SQL query: GetDTO -> exec dbo.SP >>>6493 [7] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder (null) - Named SQL query: >>>GetDTO -> exec dbo.SP >>> >>> INFO [7] (:0) - processing one-to-one association property references >>>6496 [7] INFO NHibernate.Cfg.Configuration (null) - processing one-to-one >>>association property references >>> >>> INFO [7] (:0) - processing foreign key constraints >>>6498 [7] INFO NHibernate.Cfg.Configuration (null) - processing foreign key >>>constraints >>> >>> INFO [7] (:0) - processing filters (second pass) >>>6502 [7] >>>INFO NHibernate.Cfg.Configuration (null) - processing filters (second pass) >>> INFO [7] (:0) - Using dialect: NHibernate.Dialect.MsSql2000Dialect >>>6536 [7] INFO NHibernate.Dialect.Dialect (null) - Using dialect: >>>NHibernate.Dialect.MsSql2000Dialect >>> >>> INFO [7] (:0) - Using dialect defined converter >>>6594 [7] INFO NHibernate.Exceptions.SQLExceptionConverterFactory (null) - >>>Using dialect defined converter >>> >>> INFO [7] (:0) - Generate SQL with comments: disabled >>>6596 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Generate SQL with >>>comments: disabled >>> >>> INFO [7] (:0) - Initializing connection provider: NHibernate.Connectio >>>n.DriverConnectionProvider >>>6601 [7] INFO NHibernate.Connection.ConnectionProviderFactory (null) - >>>Initializing connection provider: >>>NHibernate.Connection.DriverConnectionProvider >>> >>> INFO [7] (:0) - Configuring ConnectionProvider >>>6605 [7] INFO NHibernate.Connection.ConnectionProvider (null) - Configuring >>>ConnectionProvider >>> >>> INFO [7] (:0) - Transaction factory: >>> NHibernate.Transaction.AdoNetWithDistributedTransactionFactory >>> >>>6855 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Transaction factory: >>>NHibernate.Transaction.AdoNetWithDistributedTransactionFactory >>> >>> INFO [7] (:0) - Optimize cache for minimal puts: False >>>6861 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Optimize&n >>>bsp;cache for minimal puts: False >>> INFO [7] (:0) - Connection release mode: auto >>>6863 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Connection release >>>mode: auto >>> >>> INFO [7] (:0) - Default batch fetch size: 1 >>>6866 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Default batch fetch >>>size: 1 >>> >>> INFO [7] (:0) - Statistics: enabled >>>6868 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Statistics: enabled >>> INFO [7] (:0) - Deleted entity synthetic identifier rollback: disabled >>>6870 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Deleted entity >>>synthetic identifier rollback:&nbs >>> p;disabled >>> INFO [7] (:0) - Query translator: >>> NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory >>> >>>6872 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Query translator: >>>NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory >>> >>> INFO [7] (:0) - Query language substitutions: {'true'='1', 'false'='0'} >>>6881 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Query language >>>substitutions: {'true'='1', 'false'='0'} >>> >>> INFO [7] (:0) - cache provider: NHibernate.Cache.NoCacheProvider, >>> NHibernate, Version=3.0.0.2001, Culture=neutral, >>> PublicKeyToken=aa95f207798dfdb4 >>> >>>6887 [7] INFO NHibernate.Cfg.SettingsFactory (null) - cache provider: >>>NHibernate.Cache.NoCacheProvider, NHibernate, Version >>> =3.0.0.2001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 >>>DEBUG [7] (:0) - Wrap result sets: disabled >>>6892 [7] DEBUG NHibernate.Cfg.SettingsFactory (null) - Wrap result sets: >>>disabled >>> >>> INFO [7] (:0) - Batcher factory: >>> NHibernate.AdoNet.SqlClientBatchingBatcherFactory, NHibernate, >>> Version=3.0.0.2001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 >>> >>>6899 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Batcher factory: >>>NHibernate.AdoNet.SqlClientBatchingBatcherFactory, NHibernate, >>>Version=3.0.0.2001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 >>> >>> INFO [7] (:0) - Default entity-mode: Poco >>>6903 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Default entity-mode: >> Poco >>> INFO [7] (:0) - Named query checking : enabled >>>6914 [7] INFO NHibernate.Cfg.SettingsFactory (null) - Named query checking : >>>enabled >>> >>> INFO [7] (:0) - building session factory >>>6959 [7] INFO NHibernate.Impl.SessionFactoryImpl (null) - building session >>>factory >>> >>>DEBUG [7] (:0) - Session factory constructed with filter configurations : {} >>>6962 [7] DEBUG NHibernate.Impl.SessionFactoryImpl (null) - Session factory >>>constructed with filter configurations : {} >>> >>>DEBUG [7] (:0) - instantiating session factory with properties: >>>{'use_reflection_optimizer'='True', 'session_factory_name'='NHibernate.Test', >>> 'connection.connection_string_name'='DevDb', >>> 'dialect'='NHibernate.Dialect.MsSql2000Dialect', >>> 'current_session_context_class'='NHibernate.Context.ThreadStaticSessionContext', >>> >>> 'proxyfactory.factory_class'='NHibernate.ByteCode.LinFu.ProxyFactoryFactory, >>> NHibernate.ByteCode.LinFu', 'generate_statistics'='true', >>> 'query.substitutions'='true=1;false=0', >>> 'connection.provider'='NHibernate.Connection.DriverConnectionProvider', >>> 'connection.driver_class'='NHibernate.Driver.SqlClientDriver', >>> 'adonet.batch_size'='20'} >>>} >>>6965 [7] DEBUG NHibernate.Impl.SessionFactoryImpl (null) - instantiating >>>session factory with properties: {'use_reflection_optimizer'='True', >>>'session_factory_name'='NHibernate.Test', >>>'connection.connection_string_name'='DevDb', >>>'dialect'='NHibernate.Dialect.MsSql2000Dialect', >>>'current_session_context_class'='NHibernate.Conte >>>xt.ThreadStaticSessionContext', >>>'proxyfactory.factory_class'='NHibernate.ByteCode.LinFu.ProxyFactoryFactory, >>>NHibernate.ByteCode.LinFu', 'generate_statistics'='true', >>>'query.substitutions'='true=1;false=0', >>>'connection.provider'='NHibernate.Connection.DriverConnectionProvider', >>>'connection.driver_class'='NHibernate.Driver.SqlClientDriver', >>>'adonet.batch_size'='20'} >>>} >>>DEBUG [7] (:0) - Obtaining IDbConnection from Driver >>>6972 [7] DEBUG NHibernate.Connection.DriverConnectionProvider (null) - >>>Obtaining IDbConnection from Driver >>> >>>DEBUG [7] (:0) - Closing connection >>>8576 [7] DEBUG NHibernate.Connection.ConnectionProvider (null) - Closing >>>connection >>> >>>DEBUG [7] (:0) - initializing class SessionFactoryObjectFactory >>>8612 [7] DEBUG NH >>>ibernate.Impl.SessionFactoryObjectFactory (null) - initializing class >>>SessionFactoryObjectFactory >>> >>>DEBUG [7] (:0) - registered: >>>e7d5b17133464f05b614dd72fdfdff2f(NHibernate.Test) >>>8615 [7] DEBUG NHibernate.Impl.SessionFactoryObjectFactory (null) - >>>registered: e7d5b17133464f05b614dd72fdfdff2f(NHibernate.Test) >>> >>> INFO [7] (:0) - Factory name:NHibernate.Test >>>8617 [7] INFO NHibernate.Impl.SessionFactoryObjectFactory (null) - Factory >>>name:NHibernate.Test >>> >>>DEBUG [7] (:0) - Instantiated session factory >>>8618 [7] DEBUG NHibernate.Impl.SessionFactoryImpl (null) - Instantiated >>>session factory >>> >>>DEBUG [7] (:0) - Checking 0 named HQL queries >>>8635 [7] DEBUG NHibernate.Impl.SessionF >>>actoryImpl (null) - Checking 0 named HQL queries >>>DEBUG [7] (:0) - Checking 1 named SQL queries >>>8637 [7] DEBUG NHibernate.Impl.SessionFactoryImpl (null) - Checking 1 named >>>SQL queries >>> >>>DEBUG [7] (:0) - Checking named SQL query: GetDTO >>>8643 [7] DEBUG NHibernate.Impl.SessionFactoryImpl (null) - Checking named >>>SQL query: GetDTO >>> >>>DEBUG [7] (:0) - unable to locate native-sql query plan in cache; generating >>>(exec dbo.SP) >>> >>>8657 [7] DEBUG NHibernate.Engine.Query.QueryPlanCache (null) - unable to >>>locate native-sql query plan in cache; generating (exec dbo.SP) >>> >>>DEBUG [7] (:0)&nbs p;- starting processing of sql query [exec dbo.SP] >>>8663 [7] DEBUG NHibernate.Loader.Custom.Sql.SQLCustomQuery (null) - starting >>>processing of sql query [exec dbo.SP] >>> >>>ERROR [7] (:0) - Error in named query: GetDTO >>>NHibernate.MappingException: No persister for: Muestra.Commons.DTO.MyDTO >>> at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String >>> entityName) >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.GetSQLLoadable(String >>> entityName) >>> >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.ProcessRootReturn(NativeSQLQueryRootReturn >>> rootReturn) >>> >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.ProcessReturn(INativeSQLQueryReturn >>> rtn) >>> >>>   ;at NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.Process() >>> at >>> NHibernate.Loader.Custom.Sql.SQLCustomQuery..ctor(INativeSQLQueryReturn[] >>> queryReturns, String sqlQuery, ICollection`1 additionalQuerySpaces, >>> ISessionFactoryImplementor factory) >>> >>> at >>> NHibernate.Engine.Query.NativeSQLQueryPlan..ctor(NativeSQLQuerySpecification >>> specification, ISessionFactoryImplementor factory) >>> >>> at >>> NHibernate.Engine.Query.QueryPlanCache.GetNativeSQLQueryPlan(NativeSQLQuerySpecification >>> spec) >>> >>> at NHibernate.Impl.SessionFactoryImpl.CheckNamedQueries() >>>8673 [7] ERROR NHibernate.Impl.SessionFactoryImpl (null) - Error in named >>>query: GetDTO >>> >>>NHibernate.MappingException: No persister for: Muestra.Commons.DTO.MyDTO >>> at NH >ibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName) >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.GetSQLLoadable(String >>> entityName) >>> >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.ProcessRootReturn(NativeSQLQueryRootReturn >>> rootReturn) >>> >>> at >>> NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.ProcessReturn(INativeSQLQueryReturn >>> rtn) >>> >>> at NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.Process() >>> at >>> NHibernate.Loader.Custom.Sql.SQLCustomQuery..ctor(INativeSQLQueryReturn[] >>> queryReturns, String sqlQuery, ICollection`1 additionalQuerySpaces, >>> ISessionFactoryImplementor factory) >>> >>> at >>> NHibernate.Engine.Query.NativeSQLQueryPlan..ctor(NativeSQLQuerySpecification >>> specification, ISessionFactoryImplementor fac >>> tory) >>> at >>> NHibernate.Engine.Query.QueryPlanCache.GetNativeSQLQueryPlan(NativeSQLQuerySpecification >>> spec) >>> >>> at NHibernate.Impl.SessionFactoryImpl.CheckNamedQueries() >>> >>>NHibernate.HibernateException : Errors in named queries: {GetDTO} >>>at >>>NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping >>>mapping, Settings settings, EventListeners listeners) >>> >>>at NHibernate.Cfg.Configuration.BuildSessionFactory() >>>at Muestra.Commons.Infrastructure.UoW.Initialize(Configuration >>>_configuration) >>>in UoW.cs: line 33 >>>at Muestra.Commons.Infrastructure.UoW.Initialize() in UoW.cs: line 26 >>>at Muestra.Test.NHibernateFixture.Can_Compile() in NHibernateFixture.cs: >>>line 15 >>> >>> -- >>>Para escribir al Grupo, hágalo a esta dirección: >>>[email protected] >>>Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> -- >>Para escribir al Grupo, hágalo a esta dirección: >>[email protected] >>Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> >> -- >>Para escribir al Grupo, hágalo a esta dirección: >>[email protected] >>Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > -- >Para escribir al Grupo, hágalo a esta dirección: >[email protected] >Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
