On Jun 10, 2011, at 11:32 AM, Thiago H. de Paula Figueiredo wrote:

> On Fri, 10 Jun 2011 12:12:01 -0300, Tony Nelson <tnel...@starpoint.com> wrote:
> 
>> So maybe I should have sent this question to the Spring list?
> 
> If you're not using Tapestry-Hibernate this question went to the wrong list. 
> :)
> 

Indeed it was a Spring related issue.  Doing some more searching I found that 
Spring requires @Transactional now, and I had only added my data access tier.  
Creating a quick business tier and marking the interface @Transactional solved 
the problem.  For anyone that may find this in [insert favorite search engine] 
later:

My interface for my business class:

package com.starpoint.helpdesk.business;

import com.starpoint.helpdesk.domain.Office;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Transactional(readOnly = true)
public interface OfficeLogic {

    List<Office> getAllOffices();
}

The page was of course updated to call this method instead of the DAO directly. 
 The updated applicationContext.xml is:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:context="http://www.springframework.org/schema/context";
       xmlns:tx="http://www.springframework.org/schema/tx";
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd";
        default-autowire="byName" >

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
destroy-method="close">
        <property name="driverClassName" value="${dataSource.driverClass}" />
        <property name="username" value="${dataSource.user}" />
        <property name="password" value="${dataSource.password}" />
        <property name="url" value="${dataSource.jdbcURL}" />
    </bean>

    <!-- Hibernate session factory -->
    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:/hibernate.cfg.xml"/>
    </bean>

    <!-- Hibernate transaction manager -->
    <bean id="transactionManager"
          
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>


    <context:component-scan base-package="com.starpoint.helpdesk.dao" />
    <context:component-scan base-package="com.starpoint.helpdesk.business" />

    <context:annotation-config/>

    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>





Reply via email to