1

以编程方式验证 jpa 查询的正确方法是什么。Hibernate 验证所有基于注解的实体命名查询。但是如何在以编程方式构建的 jpa 查询上调用此验证例程来检查错误?

@实体
公共类 Foo {
@ID
公共 int id;

公共字符串名称;

}
主要的(...) {
    查询 q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' ");
    // 在这里验证 q
}
4

2 回答 2

3

不。使用与生产环境具有相同架构的真实数据库对代码进行集成测试。

想一想:如果你创建了一个格式错误的查询,那就是一个编程错误。你打算如何处理这些信息?告诉用户 JPA 查询格式不正确?您实际上所能做的就是记录错误并告诉用户“发生了不好的事情”。无论如何,当您稍后检查日志时,您就会知道这是一个格式错误的查询......

编辑

通过向其提供错误数据来调查调用可能也值得-这里createQuery()的 javadoc建议它可以抛出 a ,而且我不确定它可以对字符串做什么,而不是验证它......HibernateException

于 2009-06-24T11:14:01.843 回答
0

您可以使用 createQuery,或者您需要在编写 JPQL 时输入您的类名。

于 2015-07-09T16:18:03.697 回答