如何解决JPA 存储库方法相同或不同
我有一个 Spring boot 应用程序,它有“用户”实体和“用户资源库”类。当我在编写 JPA 方法时,我看到我们可以将两个方法编写为
List <User> findUsersByName(String name);
List <User> findByName(String name);
返回相同的结果集(如我所见)。这两种JPA方法有什么区别吗?
解决方法
不要使用 findById,因为它已在 CrudRepository 上定义,用于查找结果或没有结果(可选)。
/**
* Retrieves an entity by its id.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@literal Optional#empty()} if none found.
* @throws IllegalArgumentException if {@literal id} is {@literal null}.
*/
Optional<T> findById(ID id);
,
正如 Simon Martinelli 正确指出的,您应该小心重新定义 findById
,因为它已经存在并且有一个 custom implementation,which can be found on Github。
但是在不存在自定义实现的类似情况下,比如说
List <User> findUsersByName(String name);
List <User> findByName(String name);
两个变体是相同的。
通过查询派生,几乎 find
和 By
之间的所有内容都被忽略,例如可以用来区分执行相同基本查询但使用不同 entity graphs 的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。