2017-03-17 9 views
0

私はjavaconfig recent.Soを学習していますが、私のxml設定をjavaConfigに移そうとしていましたが、私はdb.Iからinforを照会するセッションを取得しようとすると、Tomcatで実行中のプロジェクトでエラーが発生しました。本当に混乱していました。spring-Hibernate3でjavaConfigを使用しようとするとsession.butだけの例外が発生する

ブログを読んで、インターネット上で考えられる理由を検索した後、トランザクションが正しく機能していないように見える可能性があります。ない場合 (ただし、エラーがトランザクションは、私はそれについては考えを持っていないwell.so働きを示して)

私は、コードを修正することができる方法右の仮定を得た場合?、私の問題の理由は何ですか?

助言があれば助かります。

(私の下手な英語のため申し訳ありませんが、私はそれがはるかにあなたを気にしないことを願っています。)


ここに私のJavaの設定コードです。

このクラスはRootApplicationContext

@Configuration 
@EnableAspectJAutoProxy 
@EnableTransactionManagement 
@ComponentScan(basePackages = { "com.*" }) 
@PropertySources({ @PropertySource(value = "classpath:database.properties"), 
     @PropertySource(value = "classpath:hibernate.properties") }) 
@Import(value = { HibernateConfig.class, DruidConfig.class, TransactionConfig.class }) 
public class SpringContextConfig { 

} 

のために書かれているこれは、これは私がクラスに@Transactionlを入れている、サービスを管理する必要がある

@EnableTransactionManagement 
public class TransactionConfig implements TransactionManagementConfigurer { 

    @Resource 
    SessionFactory sessionFactory; 
    @Resource 
    DataSource dataSource; 

    @Bean(name = "transactionManager") 
    public HibernateTransactionManager hibernateTransactionManager() { 
     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setDataSource(dataSource); 
     txManager.setSessionFactory(sessionFactory); 
     return txManager; 
    } 

    @Override 
    public PlatformTransactionManager annotationDrivenTransactionManager() { 
     return hibernateTransactionManager(); 
    } 

} 

取引javaConfigある

@Service("locationService") 
@Transactional(value="transactionManager") 
public class LocationServiceImpl implements LocationService { 
    @Resource 
    SessionFactory sessionFactory;  
    @Resource(name = "locationDaoImp") 
    LocationDao dao; 

    @Override 
    public Location queryLocationById(String locationId) { 
     return dao.queryLocationById(locationId); 
    } 

エラーが発生した後、私はdaoClassでデバッグしようとしています(吹き飛ぶ)が、私はいつもgら、私はメソッドgetCurrentSessionを(使用エラー)

Location location = (Location) sessionFactory.getCurrentSession().get(Location.class, locationId); 

と、これは例外

Exception in thread "pool-1-thread-1" java.lang.NoClassDefFoundError: org/springframework/orm/ObjectRetrievalFailureException 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:539) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:420) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:257) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
    at com.sun.proxy.$Proxy29.queryLocationById(Unknown Source) 
    at com.test.controller.LocationController$1.execute(LocationController.java:83) 
    at com.test.service.ExecuteTaskService$1.run(ExecuteTaskService.java:22) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 

答えて

0

大丈夫です、私は私のプロジェクトに春-orm.jarを追加しようとした後、すべてがいるようです私は正しい答えを得ることができます、そして、トランザクションは、私がプログラムをデバッグするときにも正しく働いています。

しかし、私のプログラムは、xml設定でspring-ormなしでうまく動作するので、私の操作についてはまだ混乱しています(私のjavaConfigクラスとxml設定ファイルの違いはないと確信しています。私は単にxmlファイルをjavaConfigに転送しました。)

質問の下に任意のコメントを歓迎します。

関連する問題