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 <iluu.li...@gmail.com>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 <richard.sl...@gmail.com> > > > 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 > > >