gpt4 book ai didi

Hibernate 和涉及特定行的算术

转载 作者:行者123 更新时间:2023-12-02 23:28:44 24 4
gpt4 key购买 nike

我正在使用 Hibernate,需要对结果执行基本算术函数。这是我的情况:

我正在存储里程表燃油,并且想要计算fuelEconomy。但要做到这一点,我需要知道之前的里程表读数,它来自之前的结果。这是一个例子。

表:

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 */
}

我可以使用 Criteria 来完成此任务还是必须诉诸 HQL 查询?或者将其全部留给不同的层会更好吗?

最佳答案

我会采取不同的做法。我将在数据库中存储起始里程表值,并存储行程花费了多少公里(或英里):

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

然后,您将拥有一个包含 FuelLog 集合的 Java 类,在 Hibernate 中映射为索引列表:

public class Car {
private List<FuelLog> fuelLog;
public double getFuelEconomy(FuelLog log){/* your implementation goes here */}
}
那么,

Car 将负责计算特定日志条目的燃油经济性,因为它可以访问之前的日志条目。但是这样一来,您的 FuelLog 中就不会出现 fuelEconomy 了。

关于Hibernate 和涉及特定行的算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com