繁体   English   中英

从另一个表添加值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM