我的要求:
如果VERSION列具有最大值,则从表RETAIN_INFO中获取ONE对象(例如RetainInfo)
CRUD存储库是否支持类似的接口方法
findOneByMaxRetVersionAndCountry("DEFAULT")
Run Code Online (Sandbox Code Playgroud)
等价的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;
Run Code Online (Sandbox Code Playgroud)
我更喜欢不使用自定义查询,即使用findBy或Spring CRUD支持的其他方法/接口.
小智 40
您可以将限制与排序结合使用(弹簧数据引用:限制查询结果).在CrudRepository接口中声明一个类似于以下的方法:
RetainInfo findTopByCountryOrderByRetVersionDesc(String country);
Run Code Online (Sandbox Code Playgroud)
Spring Data不提供选择最大值的表达式.所有支持的查询部分都可以在Spring 1.2.0.RELEASE文档中找到:附录A.命名空间参考或org.springframework.data.repository.query.parser.Part的第182行.
也可以在Spring的Jira页面上创建功能请求.
小智 7
您也可以使用findFirst获得第一个结果。在获得结果之前,请确保先使用Orderby,然后再使用ascending(Asc)或descending(Desc)。例如,如果您要按版本订购并根据productName检索
RetainInfo findFirstByProductNameOrderByVersionDesc(String productName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43999 次 |
| 最近记录: |