当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA 2.0.0:如何最好地解决自定义findById方法与CrudRepository中的新版本之间的冲突?

欧阳洲
2023-03-14

Spring Data JPA的2.0.0版在Crudepository中用findById和existsById替换了findOne和exists方法。

我们有一个不幸的情况,我们的实体PK属性被称为“id”,并且经常有一个名为“id”的附加自然id字段。更糟糕的是,两者都是字符串。

这意味着我们现有的findById和existsById存储方法冲突或无意中重写了CrudRepository中的方法。

我们可以将findById重命名为queryById,我们可以将存在ById重命名为类似存在LocalById的东西,但这两者都是变通方法,我怀疑人们会无意中使用错误的方法引入错误。

是否有其他可供选择的方案,以实现更清洁的设计?

共有1个答案

柯树
2023-03-14

因此,稍微深入了解一下这一变化背后的JIRA可以揭示以下内容:

如果您使用@Query注释该方法,它应该可以工作,因为这表明您希望这个东西显式地成为查询方法

初步测试似乎表明,这与预期一样有效,例如在MyEntityRepository中。。

@Query
Optional<MyEntity> findById(String id);

@Query
boolean existsById(String id);

我们仍然需要注意使用正确的方法,因为它可能会导致我怀疑的一些难以确定的错误。

 类似资料:
  • 我有一个Spark程序,它需要几个依赖项。 一个依赖项:a.jar是集群上的2.8版本,但是,我需要使用它的2.9版本。 每次启动程序时,spark都会自动从集群加载A2.8.jar,而不是加载,即使我已经通过提交了这个jar。 我尝试使用设置,但出现了另一个问题。在我的userClassPath中有一个“秘密”jar文件,比如“”,它不能与集群一起工作,而且有如此多的依赖项,我不知道哪个jar不

  • 在从MSSQL数据库中选择数据时,istill无法解决CrudRepository的问题。 存储库看起来像: MarketInfoEntity实体为: 运行测试时: 下一个堆栈跟踪如下: 你能帮我修一下这个NPE吗? 附笔。 > 可能问题出在中(查看堆栈跟踪) 另外,我还有一个方法,它使用相同的数据源扩展了CrudRepository,并且运行良好。 再次为昨天发布的stacktrace错误的帖子

  • 1.自定义添加$ 从上面四篇文章我们看到jQuery的强大,但无论如何,jQuery都不可能满足所有用户的需求,而且有一些需求十分小众,也不适合放到整个jQuery框架中,正是因为这一点,jQuery提供了用户自定义添加“$”的方法。 代码如下: $.fn.disable = function() { return this.each(function() {

  • 如果我评论其中一个,我会在游戏开始时收到运行时错误。我真的能做什么? 谢谢

  • 我读到了Crudrepository,这是一个接口,用于在特定类型的存储库上进行通用CRUD操作。 但是我们可以创建我们的自定义接口并扩展CrudRepository。

  • 目前我正在使用ApacheBeam2.18。GCP(数据流)中的0,我想将其更新为2.20。0 问题是,如果我使用2.20,我会出现以下错误。0而不是2.18。我的pom文件中的0: 我已经看到了其他类似的问题,但我看不到任何与apache梁的关系。 我应该添加或删除哪个依赖项? 这是我的pom文件的样子: 如果我排除以下内容: 关于依赖项的错误消失了,但是,如果我这样做,我将无法完成项目的编译,