【问题标题】:How do I create a JPARepository method that filter my search based on the arguments I gave it?如何创建一个 JPARepository 方法,根据我给它的参数过滤我的搜索?
【发布时间】:2021-08-03 21:25:16
【问题描述】:

使其更加清晰易懂。假设我有用户实体,它有名字、第二名和电子邮件参数。甚至可以说,在前端我有一个表单,可以根据这些参数(姓名、第二名、电子邮件)过滤我的搜索,但如果我愿意,我可以选择将其中一些留空,或者全部填写。我的后端应该如何处理这样的事情?

@Query(
        value = "SELECT * FROM utenti u WHERE"
                 + " u.nome = :nome"
                 + "AND u.cognome = :cognome"
                 + "AND u.codice_fiscale = :codiceFiscale"
                )
public List<Utente> findByFilter(
        @Param("nome") String nome,
        @Param("cognome") String cognome,
        @Param("codiceFiscale")String codiceFiscale);

}

我正在尝试编写查询,并且我想在 if(x!='') 语句中关闭每个“AND x = :x”,但我认为这甚至不可能,有什么想法吗?

【问题讨论】:

标签: spring hibernate jpa filter repository


【解决方案1】:

有多种方法可以做到这一点,例如 QueryDsl 的 BooleanBuilder,你可以让你的存储库扩展一个自定义接口(参考这个link),然后使用 BooleanBuilder 来构建谓词。

  • 阅读link 的第 2 部分,将 querydsl 添加到 Spring Boot。
  • 在 maven 生命周期中运行 install(在 intellij 中,您可以在右上角看到 maven 工具)以生成一些类 QEntity(Entity 是您的实体类的名称)。
  • 写函数查询数据,example

【讨论】:

    猜你喜欢
    • 2020-03-27
    • 2020-07-27
    • 1970-01-01
    • 2018-12-06
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多