JPA/Переход в спящий режим:проверка запросов jpa на основе кода

StackOverflow https://stackoverflow.com/questions/1037656

  •  10-07-2019
  •  | 
  •  

Вопрос

Как правильно выполнить проверку запроса 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
}
Это было полезно?

Решение

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top