gpt4 book ai didi

java - JpaRepository 不返回任何我的自定义查询

转载 作者:行者123 更新时间:2023-12-01 18:25:23 26 4
gpt4 key购买 nike

我正在 IntelliJ 中使用 Spring Boot

我已经扩展了 JpaRepository 接口(interface),并创建了一个未在存储库变量中显示的查询到我的 Controller 中(我之前已经完成了,但有些东西现在不起作用,我不知道为什么)

存储库

package com.ITAcademy.dices.repositories;

import org.springframework.data.jpa.repository.JpaRepository;

import com.ITAcademy.dices.entities.Player;

public Player findOneByOrderByrateSuccessAsc();
public Player findOneByOrderByrateSuccessDesc();
public List<Player> findAllByOrderAsc();
}

Controller :

package com.ITAcademy.dices.controllers;

import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

import com.ITAcademy.dices.exceptions.PlayerNotFoundException;
import com.ITAcademy.dices.repositories.PlayerRepository;
import lombok.Data;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import com.ITAcademy.dices.entities.Player;

import javax.persistence.Entity;

@Data
@Entity
@RestController
@RequestMapping("/dices")
public class PlayerController{

private final JpaRepository repository;

public PlayerController(PlayerRepository repository) {
this.repository = repository;
Player player = new Player();
}

//Get all players
@GetMapping("/players")
public List <Player> getAllPlayers() {
return repository.findAll();
}

//Create a new player
@PostMapping("/player")
public Object newPlayer(@RequestBody Player newPlayer) {
newPlayer.setDateRegister(Date.valueOf(LocalDate.now()));
newPlayer.setRateSuccess(-1);
if (newPlayer.getName()=="") newPlayer.setName("Anonymous");
return repository.save(newPlayer);
}

//Get a player by id
@GetMapping("/player/{idPlayer}")
public Player getPlayer(@PathVariable Integer idPlayer) throws Throwable {
return (Player) repository.findById(idPlayer)
.orElseThrow(() -> new PlayerNotFoundException(idPlayer);
}

//Delete a player
@DeleteMapping("/player/{idPlayer}")
public void deletePlayer(@PathVariable Integer idPlayer) {
try {
repository.deleteById(idPlayer);
} catch (EmptyResultDataAccessException e) {
throw new PlayerNotFoundException(idPlayer);
}
}

//Modify a player
@PutMapping("/player/{idPlayer}")
public Player modifyPlayer(@PathVariable Integer idPlayer, @PathVariable String playerName) throws Throwable {
Player player = new Player();
player = (Player) repository.findById(idPlayer)
.orElseThrow(() -> new PlayerNotFoundException(idPlayer));
player.setName(playerName);
return player;
}

//Get success average from all players
@GetMapping("/players/ranking")
public double getSuccessAverage(){
Double success = new Double;
List<Player> players = new ArrayList<Player>();
players = repository.findAll();
for(int x = 0; x < players.size(); x++){
success = success + players.get(x).getRateSuccess();
}
return success/players.size();
}

//Get player with highest success rate
@GetMapping("/players/ranking/winner")
public Player getWinner() {
return this.repository.findOneByOrderByrateSuccessAsc();
}

//Get player with lowest success rate
@GetMapping("/players/ranking/loser")
public Player getLoser() {
return this.repository.findOneByOrderByrateSuccessDesc();
}
}

存储库方法是我编写的,因为它们不会显示在存储库点之后。

有什么建议吗?谢谢

最佳答案

我认为您的查询方法名称错误。

我想最后一个例子应该是这样的:

public List<Player> findAllByOrderByIdAsc();

(我猜 id 是你的主键字段;))

以下是一些其他示例:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

关于java - JpaRepository 不返回任何我的自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com