выберите максимальный собственный запрос в спящем режиме - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить максимальное значение столбца в таблице, используя собственный запрос с аннотацией @Query

Я пытался получить его из приведенных здесь примеров: https://www.baeldung.com/spring-data-jpa-query

 @Query(value = "SELECT max(i.sequence) " +
            "FROM invoices as i " +
            "WHERE i.fleet_id = ?1", nativeQuery = true)
    Long findMaxSequence(String fleetId);

Я также пытался:

@Query(value = "SELECT max(i.sequence) " +
        "FROM invoices as i " +
        "WHERE i.fleet_id = :fleetId", nativeQuery = true)
Long findMaxSequence(@Param("fleetId") String fleetId);

Когда я вызываю мой метод как:

long maxSeq = invoiceRepository.findMaxSequenceForFleetId(invoice.getFleetId());

, я получаю NullPointerException.Есть идеи почему?

Invoice сущность выглядит так:

@Entity
@Table(name = "invoices"}
public class Invoice implements Serializable {


    @Id
    private String id;

    @Column
    private long sequence;

    @Column(length = 12)
    private String fleetId;

    // ...
}

1 Ответ

0 голосов
/ 19 сентября 2018

Проблема была связана с тем, что база данных была пуста, поэтому запрос возвращал null

, а базовые типы, такие как long, не могут быть назначены нулевым значениям.Странно, компилятор не жаловался.

Я изменил свой код, как показано ниже:

Long maxSeq = invoiceRepository.findMaxSequenceForFleetId(invoice.getFleetId());
if(maxSeq == null){
    maxSeq = 0L;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...