[英]Adding values from another table
带有 spring 启动的简单应用程序,所以我使用 jpa、hibernate 等。
用户正在向 trip_data 添加值,其中两个值在下面显示的列中。
| ID | trip_data_begin | trip_data_end |
| 1 | x1 | y1 |
| 2 | x2 | y2 |
| ID | counter_data_begin | counter_data_end |
| 1 | x1 | y2 |
x1 - 最小值
y2 - 最高值
我想要的是将其中两个值复制到 counter_data。 我可以通过查询做到这一点,但是当用户添加另一行并且 y3 高于 y2 时,counter_data 中的值不正确。 也许只对 counter_data 中的最后一个复制行进行操作?
我将非常感谢您的帮助
@Entity
@Table(name = "trip_data")
public class TripData {
@Id
@GeneratedValue(generator = "inc")
@GenericGenerator(name = "inc", strategy = "increment")
private int id;
private int tripDateBegin;
private int hourBegin;
private String townBegin;
private String countryBegin;
private long tripCounterBegin;
private int tripDateEnd;
private int hourEnd;
private String townEnd;
private String countryEnd;
private long tripCounterEnd;
public TripData() {
}
//getters and setters
@Entity
@Table(name = "counters_data")
public class CountersData {
@Id
@GeneratedValue(generator = "inc")
@GenericGenerator(name = "inc", strategy = "increment")
private int id;
private long counterDataBegin;
private long counterDataEnd;
public CountersData() {
}
// getters adn setters
我的理解:
您有一个表trip_data
并希望将trip_data_begin 的最小值和trip_data_begin
的最大值trip_data_end
在另一个表中。
这种方法是可行的,但不是一个好主意,因为每次更新trip_data
表时,您都必须更新trip_counter
表。 与其将这些信息保存在单独的表中,更好的设计是在需要时计算这些字段。 您可以直接在数据库或服务中执行此操作。
我建议使用第一个选项。 因此,您必须在TripDataRepository
中创建一个方法。 这是您的TripDataRepository
接口中的方法的一些(种类)伪代码(应该描述这个想法,语法可能不是 100% 正确)
@Query("SELECT Min(d.tripDateBegin) FROM TripData d")
int getTripBegin();
每次你得到一个新的 TripData,你需要创建/或/更新你的 tripCounter;
Select min(date_col),max(second_date_col) 来自tripdata;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.