JPA / Hibernate: проверка кода на основе jpa-запросов - PullRequest
1 голос
/ 24 июня 2009

Как правильно проверить запрос jpa программно.Hibernate проверяет все аннотации на основе именованных запросов на сущности.Но как я могу вызвать эту процедуру проверки для программно скомпилированных jpa-запросов, чтобы проверить ошибки?

@Entity
public class Foo {
@Id
public int id;

public String name;

}
main(...) {
    Query q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' ");
    // validate q here
}

Ответы [ 2 ]

2 голосов
/ 24 июня 2009

Не. Интеграция проверяет ваш код, используя реальную базу данных с той же схемой, что и ваша производственная среда.

Подумайте об этом: если вы создаете некорректный запрос, это программная ошибка . Что вы собираетесь делать с информацией? Скажите пользователю, что запрос JPA искажен? Все, что вы можете реально сделать, это зарегистрировать ошибку и сообщить пользователю «что-то плохое произошло». Вы все равно узнаете, что это некорректный запрос, когда будете проверять журналы позже ...

Редактировать

Может также стоить исследовать вызов createQuery(), передав ему неверные данные - javadoc здесь предполагает, что он может выдать HibernateException, и я не уверен, что он мог сделать с строка, отличная от проверки ...

0 голосов
/ 09 июля 2015

Либо вы можете использовать createQuery, либо вам нужно указать имя класса при написании JPQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...