Have you read the DAO tutorial? You should be able to create another DAO and have access to HibernateTemplate.
http://appfuse.org/display/APF/Using+Hibernate Matt On Mon, May 4, 2009 at 8:06 PM, Kenny Ha <vifaxoc...@yahoo.com> wrote: > > Can you give me an example?? > Thanks much! > > > mraible wrote: > > > > You should not use your own HibernateUtil class. You should use the > > "sessionFactory" bean that's already configured and use it (or a > > HibernateTemplate) to get your session. > > > > Matt > > > > On Sun, May 3, 2009 at 7:58 PM, Kenny Ha <vifaxoc...@yahoo.com> wrote: > > > >> > >> Hi all, > >> > >> I posted this problem on AppFuse-Dev, but I haven't found solution yet. > >> All I want is to excute SQL query from an XML file by using Hibernate > >> (Hibernate Named SQL query) > >> > >> I create Maven with Struts 2 framework by running commands : > >> > >> _ mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes > >> -DarchetypeArtifactId=appfuse-basic-struts > >> -DremoteRepositories=http://static.appfuse.org/releases > >> -DarchetypeVersion=2.0.2< > http://static.appfuse.org/releases%0A-DarchetypeVersion=2.0.2 > >-DgroupId=com.mycompany.app > >> -DartifactId=myproject > >> > >> _ mvn eclipse:eclipse > >> > >> _ mvn appfuse:full-source > >> > >> _ mvn jetty:run > >> > >> Everything is OK and run web application successful > >> (http://localhost:8080 > >> ) > >> > >> After that, I create a new file HibernateUtil.java in > >> src/main/java/com/mycompany/app/webapp > >> > >> package com.mycompany.app.webapp.util; > >> > >> import java.sql.Statement; > >> > >> import org.hibernate.Session; > >> import org.hibernate.SessionFactory; > >> import org.hibernate.cfg.Configuration; > >> > >> public class HibernateUtil { > >> Session session; > >> Statement st; > >> Configuration config; > >> > >> public HibernateUtil(){ > >> config = new Configuration().configure(); > >> > >> > >> SessionFactory sessionFactory = config.buildSessionFactory(); > >> session = sessionFactory.openSession(); > >> } > >> > >> public Configuration getConfiguration(){ > >> return config; > >> } > >> > >> public Session getSession(){ > >> return session; > >> } > >> } > >> > >> Then,I continue creating a new file User.hbm.xml in src/main/resources > >> > >> <?xml version='1.0' encoding='utf-8'?> > >> <!DOCTYPE hibernate-mapping > >> PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" > >> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> > >> > >> <hibernate-mapping> > >> <sql-query name="User.SqlQuery"> > >> <![CDATA[ > >> delete from app_user where id = -2 > >> ]]> > >> </sql-query> > >> </hibernate-mapping> > >> > >> And I add some lines in src/main/resources/hibernate.cfg.xml > >> > >> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate > >> Configuration DTD 3.0//EN" > >> "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> > >> > >> <hibernate-configuration> > >> <session-factory> > >> <mapping class="com.mycompany.app.model.User" /> > >> <mapping class="com.mycompany.app.model.Role"/> > >> > >> <!-- Mapping files --> > >> <mapping resource="User.hbm.xml"/> > >> > >> </session-factory> > >> </hibernate-configuration> > >> > >> In src/main/java/com/mycompany/app/webapp/action/UserAction.java > >> ,function > >> delete : > >> > >> /** > >> * Delete the user passed in. > >> * @return success > >> */ > >> public String delete() { > >> //userManager.removeUser(user.getId().toString()); > >> Session session = hibernateUtil.getSession(); > >> Query query = session.getNamedQuery("User.SqlQuery"); > >> query.executeUpdate(); > >> List<String> args = new ArrayList<String>(); > >> args.add(user.getFullName()); > >> saveMessage(getText("user.deleted", args)); > >> > >> return SUCCESS; > >> } > >> > >> I run web application again, login to access admin menu, and chose > >> Administration ---> View Users errors occur : > >> > >> javax.servlet.ServletException: Unable to instantiate Action, > userAction, > >> defined for 'users' in namespace '/admin'Error creating bean with name > >> 'userAction' defined in ServletContext resource > >> [/WEB-INF/applicationContext-struts.xml]: Instantiation of bean failed; > >> nested exception is > org.springframework.beans.BeanInstantiationException: > >> Could not instantiate bean class > >> [com.mycompany.app.webapp.action.UserAction]: Constructor threw > >> exception; > >> nested exception is org.hibernate.MappingException: An > >> AnnotationConfiguration instance is required to use - action - > >> file:/E:/Green%20Sun/Projects/demo_2/target/classes/struts.xml:131:63 > >> at > >> > org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) > >> at > >> > >> > org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > com.mycompany.app.webapp.filter.StaticFilter.doFilterInternal(StaticFilter.java:106) > >> at > >> > >> > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) > >> at > >> > >> > com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164) > >> at > >> org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141) > >> at > >> > >> > org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90) > >> at > >> > >> > org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:75) > >> at > >> net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > com.mycompany.app.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:74) > >> at > >> > >> > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359) > >> at > >> > >> > org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) > >> at > >> > >> > org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:172) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:268) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:87) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:61) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) > >> at > >> > >> > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371) > >> at > >> > >> > org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174) > >> at > >> > >> > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) > >> at > >> > >> > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> > >> > org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) > >> at > >> > >> > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) > >> at > >> > >> > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > >> at > >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > >> at > >> > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > >> at > >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > >> at > >> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) > >> at > >> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > >> at > >> > >> > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > >> at > >> > >> > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > >> at > >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > >> at org.mortbay.jetty.Server.handle(Server.java:324) > >> at > >> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > >> at > >> > >> > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828) > >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) > >> at > >> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > >> at > >> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > >> at > >> > >> > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > >> at > >> > >> > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) > >> Caused by: Unable to instantiate Action, userAction, defined for > 'users' > >> in > >> namespace '/admin'Error creating bean with name 'userAction' defined in > >> ServletContext resource [/WEB-INF/applicationContext-struts.xml]: > >> Instantiation of bean failed; nested exception is > >> org.springframework.beans.BeanInstantiationException: Could not > >> instantiate > >> bean class [com.mycompany.app.webapp.action.UserAction]: Constructor > >> threw > >> exception; nested exception is org.hibernate.MappingException: An > >> AnnotationConfiguration instance is required to use - action - > >> file:/E:/Green%20Sun/Projects/demo_2/target/classes/struts.xml:131:63 > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:294) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:83) > >> at > >> > >> > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation.(DefaultActionInvocation.java:74) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) > >> at > >> > >> > org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41) > >> at > >> > org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494) > >> ... 79 more > >> Caused by: org.springframework.beans.factory.BeanCreationException: > Error > >> creating bean with name 'userAction' defined in ServletContext resource > >> [/WEB-INF/applicationContext-struts.xml]: Instantiation of bean failed; > >> nested exception is > org.springframework.beans.BeanInstantiationException: > >> Could not instantiate bean class > >> [com.mycompany.app.webapp.action.UserAction]: Constructor threw > >> exception; > >> nested exception is org.hibernate.MappingException: An > >> AnnotationConfiguration instance is required to use > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:881) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:824) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > >> at java.security.AccessController.doPrivileged(Native Method) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:283) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > >> at > >> > >> > org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881) > >> at > >> > >> > com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:125) > >> at > >> com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143) > >> at > >> > com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113) > >> at > >> > >> > com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:275) > >> ... 87 more > >> Caused by: org.springframework.beans.BeanInstantiationException: Could > >> not > >> instantiate bean class [com.mycompany.app.webapp.action.UserAction]: > >> Constructor threw exception; nested exception is > >> org.hibernate.MappingException: An AnnotationConfiguration instance is > >> required to use > >> at > >> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:111) > >> at > >> > >> > org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) > >> at > >> > >> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:875) > >> ... 100 more > >> Caused by: org.hibernate.MappingException: An AnnotationConfiguration > >> instance is required to use > >> at > >> > >> > org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1606) > >> at > >> > >> > org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1561) > >> at > >> org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540) > >> at > >> org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514) > >> at > >> org.hibernate.cfg.Configuration.configure(Configuration.java:1434) > >> at > >> org.hibernate.cfg.Configuration.configure(Configuration.java:1420) > >> at > >> com.mycompany.app.webapp.util.HibernateUtil.(HibernateUtil.java:15) > >> at > com.mycompany.app.webapp.action.UserAction.(UserAction.java:37) > >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > >> Method) > >> at > >> > >> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > >> at > >> > >> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > >> at > java.lang.reflect.Constructor.newInstance(Constructor.java:494) > >> at > >> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:96) > >> ... 102 more > >> > >> I debug source ,it throw an exeption at BeanUtils.class : > >> > >> /** > >> * Convenience method to instantiate a class using the given > >> constructor. > >> * As this method doesn't try to load classes by name, it should > >> avoid > >> * class-loading issues. > >> * <p>Note that this method tries to set the constructor > >> accessible > >> * if given a non-accessible (that is, non-public) constructor. > >> * @param ctor the constructor to instantiate > >> * @param args the constructor arguments to apply > >> * @return the new instance > >> * @throws BeanInstantiationException if the bean cannot be > >> instantiated > >> */ > >> public static Object instantiateClass(Constructor ctor, Object[] > >> args) throws BeanInstantiationException { > >> Assert.notNull(ctor, "Constructor must not be null"); > >> try { > >> ReflectionUtils.makeAccessible(ctor); > >> return ctor.newInstance(args); > >> } > >> [...] > >> catch (InvocationTargetException ex) { > >> throw new > >> BeanInstantiationException(ctor.getDeclaringClass(), > >> "Constructor threw exception", > >> ex.getTargetException()); > >> } > >> } > >> > >> MappingException = org.hibernate.MappingException: An > >> AnnotationConfiguration instance is required to use <mapping > >> class="com.mycompany.app.model.User"/> > >> > >> Help me solve this! Its urgent. > >> Thanks all! > >> -- > >> View this message in context: > >> > http://www.nabble.com/Hibernate-Named-SQL-query-tp23361995s2369p23361995.html > >> Sent from the AppFuse - User mailing list archive at Nabble.com. > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net > >> For additional commands, e-mail: users-h...@appfuse.dev.java.net > >> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/Hibernate-Named-SQL-query-tp23361995s2369p23379844.html > Sent from the AppFuse - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net > For additional commands, e-mail: users-h...@appfuse.dev.java.net > >