È possibile consentire al metodo di query @Params di essere facoltativo, in particolare nel caso di Spring Data REST?Spring Query Method con Optional @Param
Ad esempio, mi piacerebbe associare una ricerca molto simile allo stesso percorso di risorse. Per fare questo ora, avrei bisogno di qualcosa di simile a quanto segue:
@RestResource(path = "driver", rel = "byDriver")
List<Bar> findByDriverId(@Param("id") String id, Pageable pageable);
@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan")
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param("start") Date start,
@Param("end") Date end, Pageable pageable);
che mi dà:
byDriver: {
href: "http://localhost:8080/foo/search/driver{?id,page,size,sort}",
},
byDriverAndSpan: {
href: "http://localhost:8080/foo/search/driverAndSpan{?id,start,end,page,size,sort}",
}
Quello che voglio è quello di essere in grado di vedere qualcosa di simile alla seguente percorso, dove start
e end
sono parametri facoltativi, piuttosto che definire più metodi nel mio repository.
byDriverAndSpan: {
href: "http://localhost:8080/foo/search/driverAndSpan{?id,*start,*end,page,size,sort}",
}
che potrebbero apparire come:
@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan")
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param(value = "start", optional = true) Date start,
@Param(value = "end", optional = true) Date end, Pageable pageable);
Scavando un vecchio post ... Sono sorpreso che nessuno abbia menzionato [Querydsl] (http://www.querydsl.com/), che è esattamente quello che avresti potuto usare. –