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

在Spring Data JPA存储库中使用自定义名称

邢修明
2023-03-14

我有一个简单的类客户端

@Entity
public class Client {
  @Id
  Long id;
  @Column
  String name;
  @Column
  Date since;

  // ... methods omitted 
}

,clientrepository:

public interface ClientRepository extends JpaRepository<Client, Long>, ClientRepositoryCustom {
  List<Client> findBySinceBetween(Date start, Date end);
}

,ClientrepositoryCustom:

public interface ClientRepositoryCustom {
  List<Client> getClientsSinceYear(int year);
}
@Repository
public class ClientRepositoryImpl implements ClientRepositoryCustom {
  @Overwrite
  List<Client> getClientsSinceYear(int year) {
    // ... implementation details
  }
}

我在选择名字方面有哪一级的自由?这可能吗?是否有一个触发词,如果我想要一个与我实体的属性无关的名称,我必须使用它?

如果我查询两个属性。似乎我可以编写类似findbyname(String name,int year)这样的方法,但我不希望有一个带有与方法名无关的附加参数的方法。

提前感谢,任何反馈都很感激!

共有1个答案

明财
2023-03-14

可以使用@query编写自定义查询

Spring文档

对于Microsoft SQL Server,可以编写例如

@Query("select * from client_table where year(yourColumn) = ?1")
Client findClientCreatedInYear(int year);
 类似资料:
  • 在我的项目中有几个实体具有相同的属性(对于示例'name'),所以,有可能创建一个存储库,其中使用自定义的select(实体)?因此,我从JpaRepository扩展了我的存储库,我扩展了MyCustomJpaRepository,MyCustomJpaRepository也扩展了JpaRepository,使其能够从JpaRepository授予基本功能? TKS

  • 我发现对于减少样板非常有用,但它似乎给工作带来了麻烦。我现在试图用自定义的基类存储库扩展,而在启动时,Spring在正确实例化存储库方面遇到了问题。 我已经尝试了几个关于这个主题的变体,但是没有运气让事情成功地连线起来。我在Spring的问题跟踪器https://jira.spring.io/browse/datajpa-674上遇到了一个类似的问题,但没有关于修复的解释,只是对代码进行了重构,使

  • 我最终不得不在文件。定义通常非常繁琐: 注意上面gradle提供了一种定义常用maven存储库的好方法(即)。我想在插件或父gradle脚本中找到一种方法,在函数中或静态地定义存储库,然后在块中调用它:。 我缺乏groovy方面的知识,因此我不太了解解析groovy源代码所需的知识,我正在寻找一种很好的方法来实现这一点。我该怎么做? 我知道在父级gradle文件中,我可以使用或。我不想将这些mav

  • 如果你需要提供自定义文件存储 – 一个普遍的例子是在某个远程系统上储存文件 – 你可以通过定义一个自定义的储存类来实现。你需要遵循以下步骤: 1. 你的自定义储存类必须是django.core.files.storage.Storage的子类: from django.core.files.storage import Storage class MyStorage(Storage):

  • 我正在做一个项目,在这个项目中,我们不使用默认的存储库(Maven Central、jCenter等),而是使用内部JFrog存储库。该项目正在为Gradle使用Kotlin DSL。 问题是,即使在文件中,Gradle仍然试图从Gradle中央插件库获取依赖项 失败消息: 有人知道我做错了什么吗?

  • 我是Gradle/Groovy的新手,所以我可能遗漏了一些显而易见的东西。你能帮忙吗? 我们使用Ivy进行依赖管理。我正在试用Gradle,希望与我们现有的常春藤基础设施集成。通常情况下,这应该是可能的,但我们的常春藤的布局有点特别,而且...我不能让它工作。 这是因为我们的常春藤在布局时考虑了组织的url,例如: 我现在试着把这句话翻译成Gradle: 这当然是失败的,因为“[organizat