【问题标题】:check if a record exist in database using spring boot and JPA repository使用 Spring Boot 和 JPA 存储库检查数据库中是否存在记录
【发布时间】:2020-04-01 13:49:50
【问题描述】:

我想在保存之前检查数据库中是否存在记录。如果可能的话,我想使用两个字段进行检查,即 regno 和 name。方法类似于 checkIfRegNoAndNameExists(){}。 我的模型课

@Entity
public class Car {
     @Id
    @GeneratedValue
    private int id;
    private String regno;
    private String name;
    // getters, setters, ...
}

我的道课

import org.springframework.data.jpa.repository.JpaRepository;
public interface ProgramDao extends JpaRepository<CarModel, Integer> {
}

我的服务类

@Service
public class CarServiceImpl implements ProgramService {
    @Autowired
    private CarDao carDao;
    @Override
    public carModel saveProgram(carModel car) { 
        return carDao.save(program);
    }
}

【问题讨论】:

  • 在您的存储库中创建一个类似boolean existsByRegnoAndName(String regno, String name); 的方法。无论是否存在,它都会以布尔值返回。

标签: hibernate spring-boot jpa spring-data-jpa


【解决方案1】:
interface ProgramDao extends JpaRepository<CarModel, Integer> {
    boolean existsByRegnoAndName(String regno, String name);
}

【讨论】:

  • 当我运行它时,我得到一个找不到 AndName 的错误,但这已经存在于我的模型类中。未找到 String 类型的属性 AndName!
  • 您使用的是什么 JPA 版本,或者如果您使用的是 starter,则使用什么 Spring Boot 版本。从方法名称派生的查询看起来很奇怪,因为它没有选择And 关键字
【解决方案2】:

你也可以使用exists方法:

  1. 创建您要查找的对象并设置所需的字段。
  2. 将其转换为Example
  3. 使用存储库的exists 方法。

    CarModel carModel = new CarModel();
    carModel.setRegno(regno);
    carModel.setName(name);
    repo.exists(Example.of(carModel));
    

这是一种通用方式,不需要在存储库中创建一堆方法。

【讨论】:

  • 我用过这个,但即使记录在数据库中也会返回 false public boolean exists() { CarModel carModel = new CarModel(); carModel.setRegno("DIT:1.1"); carModel.setName("DIT0101"); carDao.exists(Example.of(carModel)); if(carDao.exists(Example.of(carModel))==true) { System.out.println("这是"+carDao.exists(Example.of(carModel))); System.out.println("方法为真");返回真; }else { System.out.println("这是"+carDao.exists(Example.of(carModel))); System.out.println("方法为假");返回假; } }
  • @user3736334 所以使用存储库中的方法和相同的参数结果是真的吗?
猜你喜欢
  • 2021-07-31
  • 2020-01-21
  • 2021-04-16
  • 1970-01-01
  • 2021-11-07
  • 2018-08-06
  • 2013-08-07
  • 2015-10-04
  • 2016-07-15
相关资源
最近更新 更多