使用Spring JPA按名称查找多个对象

使用Spring JPA按名称查找多个对象,spring,hibernate,spring-mvc,spring-security,spring-data-jpa,Spring,Hibernate,Spring Mvc,Spring Security,Spring Data Jpa,我正在使用springmvc和springsecurity创建航班预订系统,在这个应用程序中,我将为一个用户保存多个预订。然后,如果用户登录到系统,我希望显示他们的预订详细信息。数据库中一个用户有多条记录。这是简单的表格。(我正在使用spring4.1.6和springsecurity 4.0.1) 这是服务类别 public List<FlightReservation> findAll(String name) { FlightReservation flightRese

我正在使用
springmvc
springsecurity
创建航班预订系统,在这个应用程序中,我将为一个用户保存多个预订。然后,如果用户登录到系统,我希望显示他们的预订详细信息。数据库中一个用户有多条记录。这是简单的表格。(我正在使用
spring4.1.6
springsecurity 4.0.1

这是
服务类别

public List<FlightReservation> findAll(String name) {
    FlightReservation flightReservation = flightReservationRepository.findByName(name);
    return findAll(flightReservation.getName());
}
当我执行这个时,它给出了几个异常。如果数据库中有多条记录,它将给出
结果并返回多个元素
。如果一个用户在数据库中只有一条记录,则控制台中会有一个无止境的循环


作为初学者,我感谢您帮助我发现我做了一件错误的事情,或者我需要做什么才能将预订详细信息放入表中?

您的存储库方法的返回类型是错误的。使用列表或集合。使用单数返回类型的工作方式类似于调用JPA查询,在找到多个项时抛出异常

此外,当存储库返回值时,服务方法会重复调用自身。它可能应该这样实现:

public List<FlightReservation> findAll(String name) {
    return flightReservationRepository.findByName(name);
}
公共列表findAll(字符串名称){
返回flightReservationRepository.findByName(名称);
}
public List<FlightReservation> findAll(String name) {
    FlightReservation flightReservation = flightReservationRepository.findByName(name);
    return findAll(flightReservation.getName());
}
public interface FlightReservationRepository extends JpaRepository<FlightReservation, Integer> {

    FlightReservation findByName(String name);

}
public List<FlightReservation> findAll(String name) {
    return flightReservationRepository.findByName(name);
}