Кажется, что критерии jpa работают (или нет), в зависимости от того, является ли db mysql или objectdb
Когда я использую JPA с MySQL, приведенный ниже запрос работает нормально. Но когда я использую его с ObjectDB, он выдает исключение ниже.
public Friendship getFriendship(String username) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Friendship> query = criteriaBuilder.createQuery(Friendship.class);
Root<Friendship> root = query.from(Friendship.class);
Path<String> path = root.<String>get("username");
query.where(criteriaBuilder.equal(path, username));
return em.createQuery(query).getSingleResult();
}
Ошибка из браузера
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: com.objectdb.o._PersistenceException: Unexpected query token 'FROM' (SELECT is expected)
root cause
com.objectdb.o._PersistenceException: Unexpected query token 'FROM' (SELECT is expected)
root cause
com.objectdb.o.UserException: Unexpected query token 'FROM' (SELECT is expected)
1 ответ
Как правильно отмечено выше (и как показано в сообщении об ошибке) - выбор отсутствует.
Допустимый запрос JPQL должен включать SELECT, в противном случае запрос является неполным.
Некоторые реализации JPA расширяют стандарт JPQL, поддерживая запросы без SELECT.