J'ai un problème. Je n'arrive pas à configurer spring avec nhibernate. Il y a l'erreur message
Voici ma configurationError creating context 'spring.root': Instance failure.
web.config
SpringSetup.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <configuration> <configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/> </sectionGroup> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <spring> <parsers> <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/> </parsers> <context> <resource uri="~//SpringSetup.xml"/> </context> </spring> <appSettings></appSettings> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %logger - %message%newline"/> </layout> </appender> <!-- Set default logging level to DEBUG --> <root> <level value="DEBUG"/> <appender-ref ref="ConsoleAppender"/> </root> <!-- Set logging for Spring. Logger names in Spring correspond to the namespace --> <logger name="Spring"> <level value="INFO"/> </logger> <logger name="Spring.Data"> <level value="DEBUG"/> </logger> <logger name="NHibernate"> <level value="DEBUG"/> </logger> </log4net>
Abstract Dao
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 <?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database"> <!-- Database and NHibernate Configuration --> <db:provider id="DbProvider" provider="SqlServer-2.0" connectionString="Data Source=PC-PROF\\SQLEXPRESS;Database=db_workn;Trusted_Connection=False;"/> <!-- NHibernate SessionFactory configuration --> <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21"> <property name="DbProvider" ref="DbProvider"/> <property name="MappingAssemblies"> <list> <value>Work</value> </list> </property> <property name="HibernateProperties"> <dictionary> <entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> <entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/> <entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/> </dictionary> </property> </object> <!-- gestionnaire de transactions --> <object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21"> <property name="DbProvider" ref="DbProvider"/> <property name="SessionFactory" ref="NHibernateSessionFactory"/> </object> <!-- Hibernate Template --> <object id="HibernateTemplate" type="Spring.Data.NHibernate.Generic.HibernateTemplate"> <property name="SessionFactory" ref="NHibernateSessionFactory" /> <property name="TemplateFlushMode" value="Auto" /> <property name="CacheQueries" value="true" /> </object> <object id="uDao" type="Work.Dao.UserDao,Work" /> <object id="uMng" type="Work.Managers.UserManager, Work" /> <object id="userDao" type="Work.Dao.UserDao, Work" init-method="init" destroy-method="destroy"> <property name="HibernateTemplate" ref="HibernateTemplate"/> </object> </objects>
User Dao.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 namespace Work.Dao { public class AbstractDao<T> : HibernateDaoSupport where T : class { private ISessionFactory GetSessionFactory() { return null; } [Transaction(ReadOnly = true)] public IList<T> GetAll() { return HibernateTemplate.Find<T>("select * from user"); } } }
User.hbm.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 namespace Work.Dao { public class UserDao : AbstractDao<User> { } }
User.hbm.xml est dans les propriété resource incorporé et est "pas copier dans le repertoire de sortie"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Work" namespace="Work.Domains"> <class name="User" table="UserAccount"> <id name="UserId"> <generator class="native" /> </id> <property name="FirstName" /> <property name="LastName" /> </class> </hibernate-mapping>
Spring.Net est contenu et "toujours copier"
Mes libs
Mon erreur est quand je passe dans ContextRegistry.GetContext()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 +Antlr3.Runtime +Common.Logging +Iesi.Collections +LinFu.DynamicProxy +log4net +NHibernate +NHibernate.DomainModel +NHibernate.Test +Spring.Aop +Spring.Core +Spring.Data +Spring.Data.NHibernate21
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 namespace Work.Managers { public class UserManager { public IList<User> GetAll() { UserDao userDao = (UserDao)ContextRegistry.GetContext().GetObject("userDao");// (UserDao)Utility.AppCtx("uDao"); IList<User> List = userDao.GetAll(); return List; } } }Regards
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <ExceptionMessage> Error creating object with name 'NHibernateSessionFactory' defined in 'file [C:\Users\marie\Documents\Visual Studio 2013\Projects\Test\Test4\Work\Work\SpringSetup.xml] line 15' : Initialization of object failed : Instance failure. </ExceptionMessage> <ExceptionType>Spring.Objects.Factory.ObjectCreationException</ExceptionType>
Partager