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
