查询方法之间的区别是什么...通过,阅读...通过,查询...通过,并获得...在弹簧数据中?

Мих*_*яха 13 spring spring-data spring-data-jpa

我正在查看spring数据的文档,并没有找到使用方法的理由read...By,get...By而不是find...By(通常这样做).请澄清:

  • 这种方法有什么作用?
  • 或者这种方法的目的是什么?
  • 在什么情况下更好地使用这种方法?
  • 他们之间有什么区别?

你能写一个query..By方法的例子吗?

Mac*_*zuk 21

我不知道其他子项目如何,但对于Spring Data JPA(1.10.2),这些方法将作为别名使用.每个方法调用都会生成相同的条件查询(以及相同的SQL查询).

在内部,这些前缀之间没有区别.它仅用于查询模式匹配:

private static final String QUERY_PATTERN = "find|read|get|query|stream";
Run Code Online (Sandbox Code Playgroud)

https://github.com/spring-projects/spring-data-commons/blob/8bc022ebd7097b921ae1ef6c87f0ae9fc05bba5f/src/main/java/org/springframework/data/repository/query/parser/PartTree.java#L54

remove...Byvs delete...By方法使用相同的方法:

private static final String DELETE_PATTERN = "delete|remove";
Run Code Online (Sandbox Code Playgroud)


emo*_*mon 7

我想这会帮助你理解..

\n\n
\n

这两个接口之间的区别在于它们的方法的语义。CRUD 存储库 \xe2\x80\x9cfinds\xe2\x80\x9d 某些内容,而 JPA 存储库 \xe2\x80\x9cgets\xe2\x80\x9d 某些内容。虽然 \xe2\x80\x9cfind\xe2\x80\x9d 可能根本没有结果,但 \xe2\x80\x9cget\xe2\x80\x9d 将始终返回 \xe2\x80\x93 的内容,否则 JPA 存储库会引发异常。

\n
\n\n

来源: https: //tuhrig.de/find-vs-get/

\n\n

你也可以看看这个帖子。https://softwareengineering.stackexchange.com/questions/182113/how-and-why-to-decide- Between-naming-methods-with-get-and-find-prefixes

\n

  • 你真的尝试过这个吗?对我来说,“get”返回“null”,就像“find”一样。 (2认同)