org.hibernate.HibernateException: createCriteria is not valid without active transaction

2010-05-08 Thread Richard Slide
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_size5/prop
prop
key=hibernate.current_session_context_classthread/prop
prop key=hibernate.show_sqltrue/prop
prop
key=hibernate.cglib.use_reflection_optimizertrue/prop
prop
key=hibernate.cache.provider_classorg.hibernate.cache.EhCacheProvider/prop
prop
key=hibernate.hibernate.cache.use_query_cachetrue/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-namecontextConfigLocation/param-name
param-value classpath:applicationContext.xml/param-value
/context-param
filter
filter-namewicket.WebProject/filter-name
filter-classorg.apache.wicket.protocol.http.WicketFilter
/filter-class
init-param
param-nameapplicationFactoryClassName
/param-name
param-value
org.apache.wicket.spring.SpringWebApplicationFactory
/param-value
/init-param
init-param
param-nameapplicationBean/param-name
param-value wicketApplication/param-value
/init-param
/filter
filter
filter-nameopensessioninview/filter-name
filter-class

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
/filter-class
/filter
filter-mapping
filter-nameopensessioninview/filter-name
url-pattern/*/url-pattern
/filter-mapping
filter-mapping
filter-namewicket.WebProject/filter-name
url-pattern/*/url-pattern
/filter-mapping
listener

listener-classorg.springframework.web.context.ContextLoaderListener
/listener-class
/listener
/web-app


Could you tell me where is my mistake please

Cheers

--Richard


Re: org.hibernate.HibernateException: createCriteria is not valid without active transaction

2010-05-08 Thread Richard Slide
Yes i did it...
this is DAO and impl




public interface DaoT extends DomainObject {

@Transactional
void delete(T o);

T load(long id);

@Transactional
void save(T o);

@Transactional
ListT findAll();

int countAll();
}

and the implemetation  is

public abstract class AbstractHibernateDaoImplT extends DomainObject
implements DaoT {

  private ClassT domainClass;

  private SessionFactory sf;

  public AbstractHibernateDaoImpl(ClassT 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 ListT findAll() {
Criteria criteria = getSession().createCriteria(domainClass);
return (ListT) 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.comwrote:

 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_size5/prop
 prop
  key=hibernate.current_session_context_classthread/prop
 prop key=hibernate.show_sqltrue/prop
 prop
  key=hibernate.cglib.use_reflection_optimizertrue/prop
 prop
 
 
 key=hibernate.cache.provider_classorg.hibernate.cache.EhCacheProvider/prop
 prop
  key=hibernate.hibernate.cache.use_query_cachetrue/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-namecontextConfigLocation/param-name
 param-value classpath:applicationContext.xml/param-value
 /context-param
 filter
 filter-namewicket.WebProject/filter

Re: org.hibernate.HibernateException: createCriteria is not valid without active transaction

2010-05-08 Thread Richard Slide
I did it.

On Sat, May 8, 2010 at 2:00 PM, James Carman
jcar...@carmanconsulting.comwrote:

 Put it on the impl class.

 On Sat, May 8, 2010 at 7:43 AM, Richard Slide richard.sl...@gmail.com
 wrote:
  Yes i did it...
  this is DAO and impl
 
 
 
 
  public interface DaoT extends DomainObject {
 
 @Transactional
 void delete(T o);
 
 T load(long id);
 
 @Transactional
 void save(T o);
 
 @Transactional
 ListT findAll();
 
 int countAll();
  }
 
  and the implemetation  is
 
  public abstract class AbstractHibernateDaoImplT extends DomainObject
 implements DaoT {
 
   private ClassT domainClass;
 
   private SessionFactory sf;
 
   public AbstractHibernateDaoImpl(ClassT 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 ListT findAll() {
 Criteria criteria = getSession().createCriteria(domainClass);
 return (ListT) 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_size5/prop
  prop
   key=hibernate.current_session_context_classthread/prop
  prop key=hibernate.show_sqltrue/prop
  prop
   key=hibernate.cglib.use_reflection_optimizertrue/prop
  prop
  
  
 
 key=hibernate.cache.provider_classorg.hibernate.cache.EhCacheProvider/prop
  prop
   key=hibernate.hibernate.cache.use_query_cachetrue/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