2010-06-16 6 views
0

J'utilise Spring.Data.NHibernate12 sur ma base de données connexion d'application de level.my avec base de données ne reçoit pas released.Sometime dans Nhibernate log je reçois ensemble transaction doit être le premier état de la transaction .Sélection de la balise de transaction en haut de la fonction. Sous donné est Dataconfiguration.xmlset transaction doit être la première déclaration de transaction avec Spring.Data.NHibernate12

<?xml version="1.0" encoding="utf-8" ?> 

<objects xmlns="http://www.springframework.net" 
     xmlns:db="http://www.springframework.net/database"> 
    <object id="AuditLogger" type="Risco.Rsp.Ac.Audit.AuditLogger, Risco.Rsp.Ac.Audit" singleton="false"> 
    <property name="CacheSettings" ref="CacheSettings"/> 
    </object> 

    <object id="CacheSettings" 
      type="Risco.Rsp.Ac.AMAC.CacheMgmt.Utilities.UpdateEntityCacheHelper, Risco.Rsp.Ac.AMAC.CacheMgmt.Utilities" singleton="false"/> 

    <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core"> 
    <property name="ConfigSections" value="databaseSettings"/> 
    </object> 

    <db:provider id="AMACDbProvider" 
       provider="OracleClient-2.0" 
    connectionString="Data Source=RISCODEVDB;User ID=amsbvt; Password=amsuser1234;"/> 

    <!-- For creating Factory objects --> 
    <object id="NHibernateSessionFactory" 
    type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate12"> 
    <property name="DbProvider" ref="AMACDbProvider"/> 
    <property name="MappingAssemblies"> 

     <list> 
     <value>Risco.Rsp.Ac.AMAC.Mapping</value> 
     <value>Risco.Rsp.Ac.Logging.Appenders</value> 
     <value>Risco.Rsp.Ac.AMAC.CacheMappings</value> 
     </list> 
    </property> 
    <property name="HibernateProperties"> 
     <dictionary> 

     <entry key="hibernate.connection.provider" 
       value="NHibernate.Connection.DriverConnectionProvider"/> 

     <entry key="hibernate.dialect" 
       value="NHibernate.Dialect.Oracle9Dialect"/> 

     <entry key="hibernate.connection.driver_class" 
       value="NHibernate.Driver.OracleClientDriver"/> 
     </dictionary> 
    </property> 
    </object> 

    <object id="HibernateTemplate" type="Spring.Data.NHibernate.HibernateTemplate" singleton="false"> 
    <property name="SessionFactory" ref="NHibernateSessionFactory" /> 
    <property name="TemplateFlushMode" value="Auto" /> 
    <property name="CacheQueries" value="true" /> 
    <property name="EntityInterceptor" ref="AuditLogger"/> 
    </object> 

    <!-- To make use of spring's + nHibernate transaction management--> 
    <object id="transactionManager" singleton="true" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12"> 
    <property name="DbProvider" ref="AMACDbProvider"/> 
    <property name="SessionFactory" ref="NHibernateSessionFactory"/> 
    <property name="EntityInterceptor" ref="AuditLogger"/> 
    </object> 


    <object id="CategoryDAOTx" type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject,Spring.Data"> 
    <property name="PlatformTransactionManager" ref="transactionManager"/> 
    <property name="Target" ref="SendConfigDataDAO"/> 
    <property name="TransactionAttributes"> 
     <name-values> 
     <add key="Save" value="PROPAGATION_REQUIRED"/> 
     <add key="Delete" value="PROPAGATION_REQUIRED"/> 
     <add key="SaveOrUpdate" value="PROPAGATION_REQUIRED"/> 
     <add key="FetchForUpdate" value="PROPAGATION_REQUIRED"/> 
     </name-values> 
    </property> 
    </object> 

    <object id="SendConfigDataDAO" type="Risco.Rsp.Ac.AMAC.DAO.SendConfigDataMgmt.SendConfigDataDAO,Risco.Rsp.Ac.AMAC.DAO.SendConfigDataMgmt"> 
    <property name="HibernateTemplate" ref="HibernateTemplate" /> 
    <property name="SessionFactory" ref="NHibernateSessionFactory"/> 
    </object> 

    <!--<tx:attribute-driven/>--> 

</objects> 

Répondre

1

Tout d'abord, vous devez mettre à jour la NHibernate version 3.

Au lieu d'utiliser Spring.Data.NHibernate12, vous devez utiliser Spring.Data.NHibernate30. Je travaille très bien avec ça.

Cordialement,