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 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
>> >
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to