У меня возникла проблема, когда я переходил от запросов гибернации к запросам JPA, чтобы упростить pom и улучшить общую совместимость, а также, надеюсь, устранить проблему с параллельными приложениями на сервере. У меня проблема в том, что я получаю эту ошибку после изменения запросов, чтобы использовать CriteriaQuery и TypedQuery вместо критериев Hibernate. Вот пример старого кода:
Criteria crit = createEntityCriteria(); //gets if from sessionFactory.getCurrentSession.createCriteria(persistentClass)
crit.add(Restrictions.eq("name", name));
App app = (App)crit.uniqueResult();
return app;
И исправленный код:
CriteriaQuery<App> cq = createCriteriaQuery(); //gets it from entityManager.getCriteriaBuilder().createQuery(persistentClass)
Root<App> root = cq.from(App.class);
cq.select(root);
cq.where(entityManager.getCriteriaBuilder().equal(root.get("name"), name));
TypedQuery<App> result = entityManager.createQuery(cq);
return result.getSingleResult();
Я пробовал много конфигураций, чтобы заставить это работать, но по какой-то причине он не находит сущности (это моя лучшая ставка на то, что происходит, так как нулевой возврат в старом контексте вполне подходит). Классы конфигурации помечаются так:
@Configuration
@EnableJpaRepositories(basePackages = {<location of daos>})
@EnableTransactionManagement
@PropertySource(value = { "classpath:application.properties" })
Кто-нибудь знаком с этим типом проблемы? Спасибо. Я также рад предоставить более подробную информацию, вот несколько соответствующих зависимостей maven, которые я установил:
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.2.2.RELEASE</version>
<relativePath />
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.2.RELEASE</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>