2012-02-24 7 views
1

私は、データベースから何かを選択しようとしているバージョン3から4 にプロジェクトに冬眠アップグレード:hibernate4でプロジェクトを実行しようとすると、エラーが発生します:ネストされたトランザクションはサポートされていませんか?

Configuration config; 
     SessionFactory sf; 
     ServiceRegistry sr; 
     private static Manager m; 

     private Manager() { 
      config = new Configuration(); 
      config.addAnnotatedClass(User.class); 
      config.addAnnotatedClass(Produs.class); 
      config.configure("hibernate.cfg.xml"); 
      sr = new ServiceRegistryBuilder().applySettings(config.getProperties()) 
        .buildServiceRegistry(); 
      new SchemaExport(config).create(true, true); 
      sf = config.buildSessionFactory(sr); 
     } 

    public void getProducts(){ 


    Session s = sf.getCurrentSession(); 
    s.beginTransaction(); 
      Query q=s.createQuery("from Produs as p WHERE p.numeProdus LIKE :numeP AND p.descriere LIKE :descriereP AND p.categorie LIKE :categorieP"); 
      q.setParameter("numeP", "%"+produs.getNumeProdus()+"%"); 
      q.setParameter("descriereP", "%"+produs.getDescriere()+"%"); 
      q.setParameter("categorieP", "%"+produs.getCategorie()+"%");   
      List l=q.list(); 
      return l; 
    } 

私は休止3で機能「getProducts」から同じことをしたし、これは動作します。バージョン4ではもう動作しません。

答えて

0

3と4の間にいくつかの変更があります。これは、私が3つから4つにアップグレードした後で、私がしなければならなかったことです。

if (session.getTransaction() != null 
      && session.getTransaction().isActive()) { 
     txD = session.getTransaction(); 
    } else { 
     txD = session.beginTransaction(); 
    } 

    //txD = session.beginTransaction(); 
    // txD.begin() ; 
    session.saveOrUpdate(dataStore); 
    try { 
     txD.commit(); 
     while (!txD.wasCommitted()) 
      ; 
    } 
関連する問題