Мне была поручена миграция устаревшего корпоративного приложения с 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();
}
}