我想在类的@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();