Почему при попытке запустить проект с помощью hibernate4 выдается сообщение об ошибке: вложенная транзакция не поддерживается? - PullRequest
1 голос
/ 25 февраля 2012

Я обновил Hibernate в проекте с версии 3 до 4 Я пытаюсь выбрать что-то из базы данных:

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

Я сделал то же самое с функцией «getProducts» в hibernate 3, и это работает. В версии 4 больше не работает.

1 Ответ

0 голосов
/ 07 января 2013

Между 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())
            ;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...