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

Spring数据JPA。部分定制存储库植入

宋劲
2023-03-14

我们可以编写存储库的自定义实现:

interface UserRepositoryCustom {
  public void someCustomMethod(User user);
}

class UserRepositoryImpl implements UserRepositoryCustom {

  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}
interface UserRepositoryCustom {
  public User findByFirstName(String firstName);

  @Query("select u.firstName from User u where u.age > 18")
  public Set<String> findAllAdultUsers();

  public void someCustomMethod(User user);
}

class UserRepositoryImpl implements UserRepositoryCustom {
  //I want implement only this method
  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}

共有1个答案

缪宪
2023-03-14

我认为唯一的解决方案是将方法分成两个接口:第一个接口用于spring查询方法,第二个接口用于定制实现,如doc:http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.single-repository-Behavior所示。

但我认为使用抽象类解决方案会更自然和逻辑:您只提供所需的方法实现,其余的由spring数据完成。

 类似资料:
  • 它是否将其存储在缓存中?我有一个应用程序,但应用程序中没有任何地方。属性是提到的db详细信息。我可以通过邮递员存储数据和查询它。

  • 是否有一种方法可以使通用Spring数据JPA存储库正确处理类似的方法?例如只返回狗,而不返回所有动物?或者至少,最好的变通方法是什么? 它的工作几乎完美,保存每一个动物在自己的桌子上,等等。唯一的问题是:同时返回水豚和狗。这个答案解释说: 这只有在域类使用单表继承时才起作用。我们在引导时能得到的关于domain类的唯一信息是它将是Product对象。因此,对于像findAll()甚至findBy

  • 我们有许多通过接口扩展JpaRepository模式定义的存储库。当运行集成测试或应用程序的某些入口点时,我们只需要这些存储库的一个非常小的子集。 我们可以懒洋洋地加载实际的存储库隐含吗? 相当于@懒在@豆上的东西?注意:我至少尝试了用@lazy注释存储库接口的简单解决方案,但没有成功。

  • 又不想工作,我不知道是怎么回事。 日志包含以下消息: 将项目放在github https://github.com/romanych2021/testjpaspring上

  • 我读过一些关于在存储库请求中使用空值的帖子,但它们都已经存在多年了。所以我问这个问题是为了了解问题的现状。 我想说的是: 我想要一个带有可选空值的JPA请求。我的存储库中的函数如下所示: 这样我就可以像这样省略过滤器中的参数:(@Query的一部分) 这只在我的参数不为NULL时有效。 请注意,我在这里使用的是原生查询。(JPA实现是Hibernate,DB是postgres) 提前感谢您的每一次