我有一个postgresql数据库,有两列,我想显示Sping Boot 时的最新条目。最新条目是ID最高的行。我这样做了,但它不起作用:
@Entity
public class Messwerte implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private double temperatur;
public Messwerte() {
}
//getters, setters, etc.
@Repository
public interface MesswertRepository extends JpaRepository<Messwerte, Long> {
@Query("SELECT max(id) from messwerte")
public List<Messwerte> getMaxID(Long id);
}
@Service
@Transactional
public class MesswerteService
{
@Autowired
private MesswertRepository messwerteRepository;
public List<Messwerte> getMaxId(Long id)
{
return messwerteRepository.getMaxID(id);
}
}
@GetMapping("/maxId")
public ResponseEntity<List<Messwerte>> getMaxId(@PathVariable Long id) {
return new ResponseEntity<>(service.getMaxId(id), HttpStatus.OK);
}
第一次
我是新来的春 Boot ,所以请帮助我!
1条答案
按热度按时间sg3maiej1#
它不起作用,因为您的查询返回
max(id)
而不是行。这意味着查询的结果将是Long
而不是Messwerte
。您还需要一个未使用的参数。
重写查询的一种方法是使用子查询:
请注意,因为这个查询最多返回一个结果,所以我将返回值更改为
Messwerte
。这也应该行得通: