Нужна помощь: Критерии гибернации работали в 4.3 Не работали в 5.3.7 - PullRequest
0 голосов
/ 18 октября 2018

Мне была поручена миграция устаревшего корпоративного приложения с Hibernate 4.3.5 на 5.3.7 и обновление до Java 10. Наше приложение использует org.hibernate.Criteria для запроса нашей базы данных.Это работает нормально и возвращает данные в Hibernate 4.3.5 (Java 10), но при компиляции и запуске с Hibernate 5.3.7 (Java 10) наши вызовы Criteria.list () возвращают пустой список (исключений не выдается).Вот пример кода, который возвращает данные с помощью Hibernate 4.3.5, но не 5.3.7.Если бы кто-то мог указать, что мне нужно изменить, это было бы здорово.Кстати, из-за изменения размера нашего приложения на использование CriteriaBuilder и CriteriaQuery выходит за рамки проекта.

import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class TestHibernate {

    private static String gHibernateCfgXMLFile = "hibernate.cfg.xml";
    private static ServiceRegistry serviceRegistry = null;
    private static SessionFactory gSessionFactory = null;

    public TestHibernate() throws Exception {
        Session fSession = null;
        try {
            Configuration fHibernateCfg = new Configuration();
            fHibernateCfg.configure(gHibernateCfgXMLFile);
            serviceRegistry = new StandardServiceRegistryBuilder().applySettings(fHibernateCfg.getProperties()).build();
            gSessionFactory = fHibernateCfg.buildSessionFactory(serviceRegistry);
            System.out.println("*****************  Users load starting.");
            fSession = gSessionFactory.openSession();
            Criteria fCriteria = fSession.createCriteria(Users.class);
            List<Users> fList = fCriteria.list();
            for (Users fSC : fList) {
                String fName = fSC.getLogon();
                System.out.println("*****************  Users loaded:  [" + fName + "].");
            }
            long fSize = fList.size();
            System.out.println("*********  Users read:  " + fSize + " POJOs.");
        }
        catch(Exception e) {
            System.out.println("Error testing DB connection");
            throw new Exception("Error testing DB connection", e);
        }
        finally {
            try { fSession.close(); } catch(Exception e) { System.out.println("Error closing conection while testing DB connection"); }
        }
    }

    public static void main(String[] args) throws Exception {
        new TestHibernate();
    }

}

1 Ответ

0 голосов
/ 20 октября 2018

Разобрался.Изменено создание фабрики сеансов:

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
            gSessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...