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); } }