Spring Boot jpa存储库findall()返回空列表

nbnkbykc  于 2023-01-13  发布在  Spring
关注(0)|答案(3)|浏览(245)

我在练习用 Spring Boot 做网页。
我创建了一个h2 DB并连接了它,我想在我的网页上将成员表的name属性显示为一个列表。
我创建了findall()方法,但是只返回了一个空列表,我的代码出了什么问题?
my web page

成员存储库

package com.example.testproject.store.h2.repository;

import com.example.testproject.store.h2.domain.Members;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MemberRepository extends JpaRepository<Members, Integer> {

}

会员服务

package com.example.testproject.store.h2.service;

import com.example.testproject.store.h2.domain.Members;

import java.util.List;

public interface MemberService {
    List<Members> getAll();

}

成员服务实现

package com.example.testproject.store.h2.service;

import com.example.testproject.store.h2.domain.Members;
import com.example.testproject.store.h2.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.lang.reflect.Member;
import java.util.List;

@Service(value = "memberServiceImpl")
public class MemberServiceImpl implements MemberService {
    @Autowired
    private MemberRepository memberRepository;

    public List<Members> getAll(){
        return memberRepository.findAll();
    }

}

成员控制器

package com.example.testproject.controller;

import com.example.testproject.store.h2.domain.Members;
import com.example.testproject.store.h2.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
@RestController
public class MemberController {
    @Autowired
    private MemberService memberService;
    @GetMapping(value = "/members")
    public List<Members> getAll() {
        List<Members> users = memberService.getAll();
        return users;
    }

    /*@GetMapping(value = "/members")
    public List<Members> getAll() throws Exception {
        return memberService.getAll();
    }*/

}

成员(实体)

package com.example.testproject.store.h2.domain;

import jakarta.persistence.*;

@Entity
@Table(name = "members")
public class Members {

    @Id
    private int id;

    @Column
    private String name;

}

我想在网页上将成员表的名称属性显示为列表。

00jrzges

00jrzges1#

你已经错过了实体类中的getter setter方法,要么你需要1:-为每个字段定义getter setter方法,要么2:-你需要在pom.xml文件中添加lombook依赖项,并在实体类的顶部添加@Data注解,这样当spring使用你的实体时,你可以设置并从数据库中获取值,如果你不想显式地给予id,那么添加@GeneratedValue(strategy=GenerationType.AUTO),这样spring就可以自动增加你的id

tvz2xvvm

tvz2xvvm2#

我认为您在Entity类中遗漏了getter和setter,请使用@Data注解添加它们,然后重试。

ffvjumwh

ffvjumwh3#

实体中的字段缺少getter和setter
你不需要任何库,你可以自己写。
否则,即使使用lombok,也应该避免在Entity上使用@Data注解,因为这可能导致errors默认实现为equalshashCode,而可以在类上使用注解@Getter@Setter

相关问题