我是spring JPA的新手。我有一个查询,这样我必须得到结果集,并且只取顶部的行。我不知道如何在spring JPA中完成它。而且我不想使用@Query注解来完成它,因为我被要求不要在代码中使用任何查询。这是我想要转换的查询
我的查询
SELECT id,name FROM example_table ORDER BY id DESC LIMIT 1;
我在我的 predicate 文件中尝试了如下内容:
public Predicate getLatest(){
QExampleTable example = QExampleTable.exampleTable;
return (Predicate) example.id.desc();
}
这是我的jpa存储库的样子:
public ExampleTable findOne(MyPredicate.getLatest());
但这是不工作了,我知道它不会清楚。但我真的不知道如何转换上述查询。有人能帮助我解决这个问题吗
4条答案
按热度按时间clj7thdc1#
您可以只使用QueryDSL而不使用 predicate 和存储库。
vom3gejh2#
您可以使用偏移或限制函数。
在您的情况下.limit(1)应该足够了
yc0p9oo03#
因为
desc()
返回一个必须与Query.orderBy()一起使用的OrderSpecifier,所以这是行不通的。下面的语句可以工作,尽管它不是一个“纯” predicate :
恐怕一个更干净的解决方案是您提供一个CustomRepository +实现。
6g8kf2rb4#
对于我来说,使用QueryDSL的有效选项是使用max()。