Я бы сделал это по-другому. Я бы сохранил в базе данных начальное значение одометра и запомнил бы, сколько КМ (или миль) поездка прошла:
START | TRIP | FUEL
60000 | 5000 | 5.0
65000 | 15000 | 15.0
Тогда у вас будет этот класс Java:
public class FuelLog {
private double start;
private double trip;
private double fuel;
}
Это тот же метод, который обычно используется для записи денежных операций, например, для банковских счетов. Единственный недостаток - вы должны убедиться, что «старт» всегда равен предыдущему старту + предыдущему отключению, чтобы избежать пропусков и / или несоответствий.
Идея состоит в том, что экземпляр этого класса не должен зависеть от других экземпляров, чтобы быть действительным экземпляром.
Другое возможное решение, которое я не считаю действительным в этом случае, - это сохранение «порядкового номера» в журнале в качестве индекса. Например:
START | TRIP | FUEL | INDEX
60000 | 5000 | 5.0 | 1
65000 | 15000 | 15.0 | 2
Тогда у вас будет класс Java, содержащий коллекцию FuelLog
, отображенную в виде индексированного списка в Hibernate:
public class Car {
private List<FuelLog> fuelLog;
public double getFuelEconomy(FuelLog log){/* your implementation goes here */}
}
В таком случае
Car
будет отвечать за расчет экономии топлива для конкретной записи журнала, поскольку он имеет доступ к предыдущим записям журнала. Но тогда у вас не будет fuelEconomy
в вашем FuelLog
.