spring-data
2014-04-02 54 views 13 likes 
13

我的要求:春季CRUD存储库:是否有findOneByMaxXYZColumn()?

取从表RETAIN_INFO一个对象(例如RetainInfo)如果VERSION列具有最大值

是否CRUD库支持等

findOneByMaxRetVersionAndCountry("DEFAULT") 

等效DB2 SQL接口方法:

select RET_ID, max(ri.RET_VERSION) from RETAIN_INFO ri where ri. COUNTRY='DEFAULT' group by RET_ID fetch first 1 rows only; 
  • 此查询选择n ID,但我实际上希望RetainInfo对象对应查询返回的SINGLE行。

我更喜欢不使用自定义查询,即使用findBy或Spring CRUD支持的其他方法/接口。

+0

的可能的复制[最大/最小值与MongoDB的文件(http://stackoverflow.com/questions/14425900/max-min-values-with -mongodb-document) – Wheezil

回答

7

Spring Data不提供表达式来选择最大值。所有支持的查询部分都可以在Spring 1.2.0.RELEASE文档中找到:Appendix A. Namespace referenceline 182 of org.springframework.data.repository.query.parser.Part

也可随时在Spring's Jira page上创建功能请求。

25

您可以使用限制与排序组合(spring data reference:limit query results)。声明类似于在您的CrudRepository界面以下的方法:

RetainInfo findTopByCountryOrderByRetVersionDesc(String country); 
+2

在大型桌子上运行时,这开始变得非常昂贵。我使用Table t' JPQL查询中的'select max(t.field)手动实现了它。 –

相关问题