特定の行を含む冬眠および算術
-
09-10-2019 - |
質問
私は冬眠を使用しており、結果に対して基本的な算術関数を実行する必要があります。これが私の状況です:
保管しています odometer
と fuel
計算したい fuelEconomy
. 。しかし、それをするには、以前を知る必要があります odometer
読書、これは前の結果から生まれます。これがイラストです。
テーブル:
ODOMETER | FUEL
65000.0 | 5.000
65500.0 | 15.000
Pojo:
public class FuelLog {
private double odometer;
private double fuel;
private double fuelEconomy;
/* Getters and Setters */
}
基準でこれを達成できますか、それともHQLクエリに頼らなければなりませんか?それとも、これはすべて一緒に別のレイヤーに残される方が良いでしょうか?
解決
私はそれを違ったやり方でやります。私はデータベースに開始走行距離計の値を保存し、旅行がいくつのkm(またはマイル)を保存します。
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
.