代码之家  ›  专栏  ›  技术社区  ›  H2000

jpa/hibernate:jpa查询的基于代码的验证

  •  1
  • H2000  · 技术社区  · 15 年前

    以编程方式验证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 回复  |  直到 9 年前
        1
  •  2
  •   Dan Vinton    15 年前

    不要这样做。集成测试您的代码,使用与生产环境具有相同模式的真实数据库。

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

    编辑

    这也可能是值得调查的 createQuery() 通过向它提供坏数据来调用-javadoc here 暗示它可以 HibernateException 我不知道它能用一个字符串做什么,除了验证它…

        2
  •  0
  •   alok    9 年前

    可以使用createQuery,也可以在编写JPQL时输入类名。