I did it..... On Sat, May 8, 2010 at 2:00 PM, James Carman <[email protected]>wrote:
> Put it on the impl class. > > On Sat, May 8, 2010 at 7:43 AM, Richard Slide <[email protected]> > wrote: > > Yes i did it... > > this is DAO and impl > > > > > > > > > > public interface Dao<T extends DomainObject> { > > > > @Transactional > > void delete(T o); > > > > T load(long id); > > > > @Transactional > > void save(T o); > > > > @Transactional > > List<T> findAll(); > > > > int countAll(); > > } > > > > and the implemetation is > > > > public abstract class AbstractHibernateDaoImpl<T extends DomainObject> > > implements Dao<T> { > > > > private Class<T> domainClass; > > > > private SessionFactory sf; > > > > public AbstractHibernateDaoImpl(Class<T> domainClass) { > > this.domainClass = domainClass; > > } > > > > public SessionFactory getSessionFactory() { > > return sf; > > } > > > > public void setSessionFactory(SessionFactory sf) { > > this.sf = sf; > > } > > > > public void delete(T object) { > > getSession().delete(object); > > } > > > > @SuppressWarnings("unchecked") > > public T load(long id) { > > return (T) getSession().get(domainClass, id); > > } > > > > public void save(T object) { > > getSession().saveOrUpdate(object); > > } > > > > @SuppressWarnings("unchecked") > > public List<T> findAll() { > > Criteria criteria = getSession().createCriteria(domainClass); > > return (List<T>) criteria.list(); > > } > > > > public int countAll() { > > Criteria criteria = getSession().createCriteria(domainClass); > > criteria.setProjection(Projections.rowCount()); > > return (Integer) criteria.uniqueResult(); > > } > > > > public Session getSession() { > > // presumes a current session, which we have through the > > // OpenSessionInViewFilter; doesn't work without that > > return sf.getCurrentSession(); > > } > > } > > > > > > > > > > On Sat, May 8, 2010 at 12:05 PM, Karolina Rusin <[email protected] > >wrote: > > > >> Hello Richard, > >> > >> Maybe you need to use @Transactional above your dao method? > >> Hope this helps. > >> > >> Best regards, > >> Karolina Rusin > >> > >> > >> 2010/5/8 Richard Slide <[email protected]> > >> > >> > Hello all, > >> > i try to do a simple web application with the classic layout > >> > Wicket->Spring->Hibernate > >> > > >> > When i try to make a simple request i receive the following error. > >> > > >> > WicketMessage: Error attaching this container for rendering: [Page > class > >> = > >> > ch.myexample.ListContacts, id = 0, version = 0] > >> > Root cause: > >> > org.hibernate.HibernateException: createCriteria is not valid without > >> > active > >> > transaction > >> > > >> > In IMHO all file conf seams to be correct correct... bat i don't > >> undestand > >> > hibenate dosen't find the correct session. > >> > > >> > At UI level i load the data with LoadableDetachableModel > >> > > >> > IModel contactsModel = new LoadableDetachableModel() { > >> > protected Object load() { > >> > return > >> > WicketApplication.get().getContactService().findAllContacts(); > >> > } > >> > }; > >> > > >> > --applicationContext from here -- > >> > > >> > <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> > >> > <property name="driverClassName"> > >> > <value>${jdbc.driver}</value> > >> > </property> > >> > <property name="url"> > >> > <value>${jdbc.url}</value> > >> > </property> > >> > <property name="username"> > >> > <value>${jdbc.username}</value> > >> > </property> > >> > <property name="password"> > >> > <value>${jdbc.password}</value> > >> > </property> > >> > </bean> > >> > > >> > <!-- hibernate session factory --> > >> > <bean id="sessionFactory" > >> > > >> > > >> > > >> > class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> > >> > <property name="dataSource" ref="dataSource" /> > >> > <property name="hibernateProperties"> > >> > <props> > >> > <prop > key="hibernate.dialect">${hibernate.dialect}</prop> > >> > <prop key="hibernate.connection.pool_size">5</prop> > >> > <prop > >> > key="hibernate.current_session_context_class">thread</prop> > >> > <prop key="hibernate.show_sql">true</prop> > >> > <prop > >> > key="hibernate.cglib.use_reflection_optimizer">true</prop> > >> > <prop > >> > > >> > > >> > key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> > >> > <prop > >> > key="hibernate.hibernate.cache.use_query_cache">true</prop> > >> > </props> > >> > </property> > >> > <property name="annotatedClasses"> > >> > <list> > >> > <value> > >> > ch.myexample.domain.Contact > >> > </value> > >> > </list> > >> > </property> > >> > </bean> > >> > > >> > <!-- setup transaction manager --> > >> > <bean id="transactionManager" > >> > > >> > > class="org.springframework.orm.hibernate3.HibernateTransactionManager"> > >> > <property name="sessionFactory"> > >> > <ref bean="sessionFactory" /> > >> > </property> > >> > </bean> > >> > <tx:annotation-driven /> > >> > <bean id="ContactDao" class="ch.myexample.dao.impl.ContactDaoImpl"> > >> > <property name="sessionFactory" ref="sessionFactory" /> > >> > </bean> > >> > <bean id="LocalServiceService" > >> > class="ch.myexample.services.LocalServiceImpl"> > >> > <property name="contactDao" ref="ContactDao" /> > >> > </bean> > >> > <bean id="wicketApplication" > class="ch.myexample.WicketApplication"> > >> > </bean> > >> > </beans> > >> > > >> > > >> > -- > >> > --applicationContext to here -- > >> > > >> > and web.xml > >> > > >> > <context-param> > >> > <param-name>contextConfigLocation</param-name> > >> > <param-value> classpath:applicationContext.xml</param-value> > >> > </context-param> > >> > <filter> > >> > <filter-name>wicket.WebProject</filter-name> > >> > <filter-class>org.apache.wicket.protocol.http.WicketFilter > >> > </filter-class> > >> > <init-param> > >> > <param-name>applicationFactoryClassName > >> > </param-name> > >> > <param-value> > >> > org.apache.wicket.spring.SpringWebApplicationFactory > >> > </param-value> > >> > </init-param> > >> > <init-param> > >> > <param-name>applicationBean</param-name> > >> > <param-value> wicketApplication</param-value> > >> > </init-param> > >> > </filter> > >> > <filter> > >> > <filter-name>opensessioninview</filter-name> > >> > <filter-class> > >> > > >> > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter > >> > </filter-class> > >> > </filter> > >> > <filter-mapping> > >> > <filter-name>opensessioninview</filter-name> > >> > <url-pattern>/*</url-pattern> > >> > </filter-mapping> > >> > <filter-mapping> > >> > <filter-name>wicket.WebProject</filter-name> > >> > <url-pattern>/*</url-pattern> > >> > </filter-mapping> > >> > <listener> > >> > > >> > <listener-class>org.springframework.web.context.ContextLoaderListener > >> > </listener-class> > >> > </listener> > >> > </web-app> > >> > > >> > > >> > Could you tell me where is my mistake please > >> > > >> > Cheers > >> > > >> > --Richard > >> > > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
