我决定将Springboot用作Backendframework。但是我在使用JPARepositories时遇到了一些问题。
如果我在HTTP调用中使用findAll方法,一切正常!
但是我也想使用JPARepository来访问我的数据库,而无需调用控制器或HTTP请求..这是我的代码(因为从两天以来我一直在尝试解决这个问题,所以有点混乱)
这是我的代码:
应用程序类:
@EnableJpaRepositories
@SpringBootApplication
public class WebappBackendApplication {
public static void main(String[] args) {
SpringApplication.run(WebappBackendApplication.class, args);
JPA实体:
@Entity
@Table(name="t_mitglieder")
public class TMitglieder {
private Long id;
private String mitgliedsnr;
private String mitgliedsart;
存储库:
@Repository
public interface MemberRepository extends JpaRepository<TMitglieder, Long>{
}
用来调用我的存储库的Java类(该类在主应用程序之后立即调用(用于测试问题,因为我不想发出HTTP请求):
public class CommandLineAppStartupRunner implements CommandLineRunner {
@Autowired
private FeeService myService;
@Override
public void run(String...args) throws Exception {
myService.getYearlyFeeForMember(1,1);
}
}
进行存储库调用的服务:
@Service
public class FeeService {
public Double yearlyFee;
public List<TBeitragstabelle> fees = new ArrayList<>();
public List<TMitglieder> members = new ArrayList<>();
@Autowired
private MemberRepository memberRepository;
public Double getYearlyFeeForMember(int memberID, long year) {
this.members= memberRepository.findAll(); //returns empty list
Optional<TMitglieder> mitglieder = memberRepository.findById(Integer.toUnsignedLong(1)); // does not find anything
System.out.println("members: ");
for (TMitglieder member : members) {
System.out.println("--->" + member.getName());
}
return yearlyFee;
}
}
为什么我会得到一个空列表?
但是这很好用->由我的WebApplication使用。我只打电话给/ members,发现所有成员:
控制器:
@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/api/v1")
public class MitgliederController {
private List<TMitglieder> memberList;
@Autowired
private MemberRepository memberRepository;
@GetMapping("/members")
public List<TMitglieder> getAllMember() {
memberList = memberRepository.findAll();
return memberList;
}
}
答案 0 :(得分:0)
您是否可以尝试添加basePackages以启用jpa repo注释和实体扫描注释。 例如:
@EnableJpaRepositories(basePackages = "com.examples.jpa.repositories")
@EntityScan(basePackages = "com.examples.entity")
还添加@EnableAutoConfiguration将扫描给定的程序包以检测实体。