2009-06-24 33 views
0

以编程方式验证jpa查询的正确方法是什么? Hibernate验证实体上所有基于注解的命名查询。但是我怎样才能以编程方式建立jpa查询来调用这个验证例程来检查错误?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

不要。使用与您的生产环境具有相同架构的真实数据库,集成可以测试您的代码。

想一想:如果您创建格式错误的查询,那是编程错误。你将如何处理这些信息?告诉用户JPA查询格式不正确?你真正能做的就是记录错误并告诉用户“发生了什么不好的事情”。你会知道这是一个畸形的查询时,您以后再检查日志反正...

编辑

这也可能是值得喂养它坏数据调查createQuery()呼叫 - 的Javadoc here表明,它可以抛出一个HibernateException,我不确定它可以用一个字符串除了验证它能做什么...

+0

我只想验证我的编程生成的查询,就像hibernate对@namedquery执行的操作一样。如果发现错误,程序必须关闭。我在哪里检查是不是这里的问题,如何。 – H2000 2009-06-24 12:12:33

0

要么你可以使用createQuery,或者你需要在写JPQL的时候放上你的类名。