为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Spring Boot 从数据库中检索列表

使用 Spring Boot 从数据库中检索列表

阿晨1998 2021-12-10 12:30:42
我有一个名为的数据库findall_db,其中一个表名为person... 我已手动向该表添加了一些值,并希望使用 Spring Boot 检索它们。这就是我所拥有的,但我的控制器中不断出现此错误:Type mismatch: cannot convert from Iterable<PersonInfo> to List<PersonInfo>实体类是:@Entity@Table(name = "Person")public class PersonInfo implements Serializable {    private static final long serialVersionUID = 1 L;    @Id    @SequenceGenerator(name = "PERSON_GENERATOR", sequenceName = "PERSON_SEQ")    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PERSON_GENERATOR")    private Long id;    @Column(name = "ssn")    private String socialSecurityNumber;    private String name;    public PersonInfo() {}    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getSocialSecurityNumber() {        return socialSecurityNumber;    }    public void setSocialSecurityNumber(String socialSecurityNumber) {        this.socialSecurityNumber = socialSecurityNumber;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "PersonInfo [id=" + id + ", socialSecurityNumber=" + socialSecurityNumber + ", name=" + name + "]";    }}存储库类是:@Repositorypublic interface PersonInfoRepository extends CrudRepository < PersonInfo, Long > { }控制器是:@Controllerpublic class PersonController {    @Autowired    PersonInfoRepository personRepo;    @ResponseBody    @GetMapping("/people")    public List printPersonInfo() {        List < PersonInfo > people = personRepo.findAll();        System.out.println(people.toString());        return people;    }}
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

那是因为CrudRepository#findAll返回 anIterable而不是 a List。因此,您要么(1)更改方法签名以返回 anIterable或者您 (2)将元素复制到 aList并返回它。


(1) 返回Iterable:


public Iterable<PersonInfo> printPersonInfo() {

    return personRepo.findAll();

}

(2) 将元素复制到 aList并返回列表。


public List<PersonInfo> printPersonInfo() {

    List<PersonInfo> list = new ArrayList<>();

    personRepo.findAll().forEach(list::add);

    return list;

}


查看完整回答
反对 回复 2021-12-10
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

@Autowired

PersonInfoRepository personRepo;


@ResponseBody

@GetMapping("/people")

public List printPersonInfo() {


    List < PersonInfo > people = personRepo.findAll();


    System.out.println(people.toString());


    return people;

}

在这部分代码中,您没有初始化(强制转换更好)您的控制器变量


你可以很容易地用List<PersonInfo>afterpeople =


查看完整回答
反对 回复 2021-12-10
?
红颜莎娜

TA贡献1842条经验 获得超13个赞

public List<PersonInfo> printPersonInfo() {    

       List<PersonInfo> people = personRepo.findAll()

                                           .stream()

                                           .collect(Collectors.toList());

       System.out.println(people.toString());

       return people ;

}


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号