質問

私は冬眠を使用しており、結果に対して基本的な算術関数を実行する必要があります。これが私の状況です:

保管しています odometerfuel 計算したい 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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top