在@ NamedQuery-head中执行静态方法

时间:2013-12-05 13:23:30

标签: java hibernate static-methods named-query

我想在类的@NamedQuery中执行静态方法。像这样:

@NamedQuery(name = "allFailures", query = "select failureInfo from FailureInfo failureInfo where failureInfo.counter <="+ CountClass.myMethod() + "AND failureInfo.counter <> 0 order by failureInfo.counter asc LIMIT 1")

如你所见,我想调用“CountClass.myMethod()” - 方法。 但我只能从变量中选择。我的方法没有显示为选项。有没有办法在@NamedQuery中调用我的方法?

方法是静态的,我可以在类中调用它。但正如我所说,不是在@NamedQuery。

1 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您需要参数化查询。您可以使用带有命名查询的常规参数,如下所示:

@NamedQuery(name = "allFailures", query = "select failureInfo from FailureInfo
                                  failureInfo where failureInfo.counter <= :counter 
                                  AND failureInfo.counter <> 0 
                                  order by failureInfo.counter asc LIMIT 1")

构建查询后,使用静态方法设置参数,使用常规方法或变量:

TypedQuery<FailureInfo> query =
      em.createNamedQuery("FailureInfo.allFailures", FailureInfo.class);
query.setParameter("counter", MyClass.myMethod());
query.getResultList();