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

带有可选字段的JPA存储库findAll

桂德义
2023-03-14

我有一个控制器尝试用可选字段搜索。JPA实体类定义为:

package demo;

import javax.persistence.*;

@Entity
public class UploadFile {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int id;
  private String name;

  public UploadFile() {
  }

  public UploadFile(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  @Override
  public String toString() {
    return "UploadFile{" +
        "id=" + id +
        ", name='" + name + '\'' +
        '}';
  }

}
@RequestMapping(value = "/searchFile", method = RequestMethod.GET)
public @ResponseBody
List<UploadFile> searchFile(@RequestParam("id") Optional<Integer> id, @RequestParam("name") Optional<String> name) {
    UploadFile newFile = new UploadFile();
    if (id.isPresent()) {
        newFile.setId(id.get());
    }
    if (name.isPresent()) {
        newFile.setName(name.get());
    }
    System.out.println("new File: " + newFile);

    //uploadFileRepository is a JpaRepository Class
    return List<UploadFile> files = uploadFileRepository.findAll(Example.of(newFile));
}
ID      NAME    SIZE    TYPE  
1       index   111     html
new File: UploadFile{id=1, name='null'}

共有1个答案

闻人宜
2023-03-14

我认为您不能使用示例按ID查找记录。(这是很合乎逻辑的,如果您知道这个id,那么您为什么需要这个特性呢?)

因此,如果请求中提供了id参数,则直接使用findById(id),否则填充示例对象的所有提供属性并使用findAll(example.of(example))方法。

 类似资料:
  • 我必须用一个特定的名称(我使用spring和Jpa)来命名扩展CrudRepository的接口,即。 所以在本例中,我有一个名为UserRepository的实体 我尝试了注释 但这行不通...

  • 是否有一种方法可以使用来完成这一任务,而不需要为每个Patamenter组合创建大量/语句?

  • 我目前正在spring boot中编写一个应用程序,并正在构建自己的自定义存储库。 首先,这里是有问题的代码: 启动应用程序后,它会失败,并出现以下堆栈跟踪: 非常感谢您的帮助:) 注意:此设置以前与JPA存储库一起使用,因此这不是服务调用它的问题,而是新服务存储库的故障。

  • 我在JpaRepository中使用Jpql查询。问题是,每次使用可选返回调用方法时,都会出现以下错误: java.lang.ClassCastException: class[Ljava.lang.Object;不能强制转换为类com.netpos.pagvendas.campaignuser.entity.活动用户([Ljava.lang.Object;在加载器'bootstrap'的模块ja

  • 问题内容: 我是一名Swift新手,我正在努力使Structs具有可选属性。我已经做了很多搜索,找到了可以解决的问题,但是效率低下,所以想知道是否有更好/更易管理的方法来实现我的目标。 我想使用Structs来代表一家企业,但我事先不知道任何特定企业可能具有哪种属性组合。这似乎意味着我必须为每种可能的参数组合创建一个init()。 这是一个简化的示例(我还有更多属性): 然后,我可以像这样初始化类

  • 我一直有这样一个问题,即我无法使用querydsl对一个具有可为空外键的表进行正确的筛选。我把我的用例简化成一个非常简单的场景。 假设我们有两个实体,MyEntity和TimeRangeEntity。我的实体只有一个ID和一个TimeRangeEntity的外键。TimeRangeEntity只有开始时间、结束时间和ID。它们都从BaseEntity扩展,它只有带有@ID注释的ID。 我还编写了一