【发布时间】:2017-08-20 04:50:38
【问题描述】:
例如,我有一本书 JpaRepository。 Book 有一个名为Name 的字段,book 存储库有一个方法findOneByName(作为 jpa 存储库方法命名约定)。但是我需要两个不同版本的findOneByName 才能在不同的用例中使用。一个版本是lock annotated,另一个是lock-free。像这样:
public interface BookRepository extends JpaRepository<BookDAO, Long> {
@Lock(LockModeType.READ)
BookDAO findOneByName( String name );
BookDAO findOneByName( String name );
}
是否有可能在 Spring 中实现这一点?如果是,调用时如何区分这两种方法。如果没有,是否还有其他方法可以在仍然使用 Spring JPA 存储库接口(如 findOneBy***)的同时做到这一点。
【问题讨论】:
-
我不会对其中之一使用查询方法。我将为@Lock 创建一个新方法,并将其命名为
findOneByNameWithLock(name)。然后使用@Query 注解并为其指定查询。 -
不,不是这样(与 Spring 无关,而是 Java 的工作原理)。
-
@M.Deinum 谢谢。你对这个用例有什么建设性的建议吗?如何以另一种方式做到这一点?
-
查看@LucasP 的评论。
标签: spring hibernate orm spring-data-jpa