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

时间:2017-10-19 22:36:41

标签: spring-data-jpa

发布2.0.0的Spring Data JPA取代了findOne,并且在CrudRepository中存在了findById和existsById的方法。

我们有一个不幸的情况,我们的实体PK属性被称为" oid",并且通常还有一个名为" id"的额外自然id字段。更糟糕的是Strings。

这意味着我们现有的findById和existsById Repository方法会冲突或无意中覆盖CrudRepository中的方法。

findById我们可以重命名为queryById,而existsById我们可以重命名为existsLocalById,但两者都是变通方法,我怀疑人们会无意中使用错误的方法引入错误。

是否还有其他选项可以使设计更清晰?

1 个答案:

答案 0 :(得分:1)

因此,稍微深入了解变更背后的JIRA会发现以下内容:

  

如果您使用@Query注释方法,它应该可以工作   表示您希望此事物明确地成为查询方法

初步测试似乎表明这可以按预期工作,例如在MyEntityRepository ..

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

@Query
boolean existsById(String id);

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