Сравните два атрибута класса, используя метод JPA - PullRequest
0 голосов
/ 02 июня 2019

Я хочу сравнить два атрибута, используя соглашение о методе JPA.

Это мой класс

@Entity
@Table(name = "aircrafts")
public class Aircrafts {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Size(max = 45)
    @Column(name = "number", length = 45)
    private String number;

    @Column(name = "capacity")
    private int capacity;

    @Column(name = "seats_taken")
    private int seatsTaken;
}

И этот метод я хочу реализовать:

public interface AircraftsRepository extends JpaRepository<Aircrafts, Long> {
    public List<Aircrafts> findBySeatsTakenLessThanCapacity();
}

Однако я получил это исключение:

PropertyReferenceException: No property lessThanCapacity found for type int! Traversed path: Aircrafts.seatsTaken.

Я пытался использовать int и Integer, но получил то же исключение. Какое правильное имя метода?

1 Ответ

0 голосов
/ 03 июня 2019

Я думаю, @ benji2505, правильно упомянул, что модель данных смешивает вещи, которые «должны» быть в разных таблицах.Обычно можно ожидать две таблицы: Самолеты, Полеты.

Тогда вы можете легко использовать:

List<Flight> flightsWithFreeSeats = aircraftRepository
.findAll()
.stream()
.map(aircraft ->
 flightRepository.findByAircraftAndSeatsTakenLessThen(aircraft, aircraft.getCapacity)
)
.collect(Collectors.toList)

С текущей моделью, вероятно, @JZ Низет уже опубликовал лучший ответ в своем комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...