我想在类的@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()”-Method。
但是我只能从变量中选择。我的方法没有显示为选项。有没有办法在@NamedQuery中调用我的方法?

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

最佳答案

如果我正确理解了您的问题,则希望对查询进行参数设置。您可以将常规参数与命名查询一起使用,如下所示:

@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();

07-24 21:37