Missing CrudRepository#findOne method Missing CrudRepository#findOne method spring spring

Missing CrudRepository#findOne method


Please see DATACMNS-944 which is associated to this commit which has the following renames

╔═════════════════════╦═══════════════════════╗║      Old name       ║       New name        ║╠═════════════════════╬═══════════════════════╣║ findOne(…)          ║ findById(…)           ║╠═════════════════════╬═══════════════════════╣║ save(Iterable)      ║ saveAll(Iterable)     ║╠═════════════════════╬═══════════════════════╣║ findAll(Iterable)   ║ findAllById(…)        ║╠═════════════════════╬═══════════════════════╣║ delete(ID)          ║ deleteById(ID)        ║╠═════════════════════╬═══════════════════════╣║ delete(Iterable)    ║ deleteAll(Iterable)   ║╠═════════════════════╬═══════════════════════╣║ exists()            ║ existsById(…)         ║╚═════════════════════╩═══════════════════════╝


Note that findById is not an exact replacement for findOne, it returns an Optional instead of null.

Being not very familiar with new java things it took me a little while to figure out, but this turns the findById behavior into the findOne one:

return rep.findById(id).orElse(null);


We had many hundreds of usages of the old findOne() method. Rather than embark on a mammoth refactor, we ended up creating the following intermediary interface and had our repositories extend it instead of extending JpaRepository directly

@NoRepositoryBeanpublic interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> {     default T findOne(ID id) {         return (T) findById(id).orElse(null);     } }