java - 从另一个表添加值
问题描述
带有spring boot的简单应用程序,所以我使用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_end
在另一个表中。
这种方法是可行的,但不是一个好主意,因为每次trip_data
更新表时,您都必须更新trip_counter
表。与其将这些信息保存在单独的表中,更好的设计是在需要时计算这些字段。您可以直接在数据库或服务中执行此操作。
我建议使用第一个选项。因此,您必须在TripDataRepository
. 这是您界面中方法的一些(某种)伪代码TripDataRepository
(应该描述这个想法,语法可能不是 100% 正确)
@Query("SELECT Min(d.tripDateBegin) FROM TripData d")
int getTripBegin();
推荐阅读
- c# - 警报框进行验证但未在屏幕上显示按摩
- javascript - React spring transition,实现每个元素进入的渐进式延迟
- kotlin - 导航到使用 RecyclerView 和 Room 数据库和 LiveData 的片段时,应用程序崩溃
- python - 卡夫卡消费者间歇性挂起
- sql - 如何将 SQL 脚本转换为画面过滤器?
- python - 在 SimPy 中使用 Monitor 和 Tally 命名错误
- powershell - 无法创建具有多个权限的 acl 拒绝规则
- c++ - SDL 中没有可用的视频设备
- lets-encrypt - 要修复这些错误,请确保您的域名输入正确且 DNS A/AAAA 记录
- java - GPS应用程序可以在模拟器上运行,但不能在我的手机上运行