2011-10-30 9 views
1

私は、Spring 3.0.5、Hibernate 3.3、およびgeneric-hibernate-daoで作業しています。私はBaseDAOImplを作成し、以下のようにドメインDAOを拡張しましたハイバーネーションセッションは、汎用ハイバーネイト - ダオライブラリのスレッドにバインドされていません。

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean?"> 
    <property name="dataSource"> 
     <ref local="dataSource" /> 
    </property> 
<property name="packagesToScan" value="com.xxx.re.admin.model" /> <property name="hibernateProperties"> 

     <props> 
      <prop key="hibernate.dialect"> 
       org.hibernate.dialect.MySQLDialect 
      </prop> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.hbm2ddl.auto">validate</prop> 
     </props> 
    </property> 
</bean> 

<!-- Transaction manager for a single Hibernate SessionFactory? (alternative 
    to JTA) --> 
<tx:annotation-driven /> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager?"> 
    <property name="sessionFactory"> 
     <ref local="sessionFactory" /> 
    </property> 
</bean> 

:以下のように私は、HibernateのSessionFactoryを設定した

public class BaseDAOImpl<T, ID extends Serializable> extends GenericDAOImpl<T, ID> { 
    @Autowired @Override public void setSessionFactory(SessionFactory? sessionFactory) { 
     super.setSessionFactory(sessionFactory); 
    } 
} 

@Repository public class LocaleDAOImpl extends BaseDAOImpl<Locale, Long> implements LocaleDAO { 

} 

私の春コントローラ(dao.findAll()を呼び出す)にアクセスするには、私が取得します次のエラー:それはあなたのコントローラの間の中間である場合

org.hibernate.HibernateException?: 
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here. 

答えて

0

@Transactional(または多分いくつかのサービスを使用して、コントローラを注釈し、 DAO)。サービスは実際にはより良い場所です。それ以外の場合は、*-servlet.xmlのMVC設定ファイルに<tx:annotation-driven />を配置する必要があります。

私はこのライブラリを使用したことがありません(私は個人的にSpringポートフォリオのSpring Data JPAを使用しています)が、ドキュメントはトランザクションについて何も言わないので、ユーザーが設定する必要があります。

UPDATE:私は右の午前のように、それらが提供する例を見てはいるようだ:

@Transactional 
public class CitizenServiceImpl implements CitizenService { 
//... 

http://code.google.com/p/hibernate-generic-dao/source/browse/trunk/sample/jpa-hibernate-maven/src/main/java/sample/googlecode/genericdao/service/CitizenServiceImpl.java?r=635

+0

ねえ、おかげでたくさん。これで一日中苦労している。 –

関連する問題