gpt4 book ai didi

触发器与 JPA 事件

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

我正在使用 Spring 3.1.0.RELEASE、JSF 2.x、JPA 2 和 Hibernate Provider、MySql 5.1.x 编写 Web 应用程序。该应用程序在 Tomcat 7.X 上运行。

在我的实体中,我有一些日期,例如上次更新日期:

@Column(name = "last_update_date", insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastUpdateDate;

目前我有一个更新的触发器:

CREATE TRIGGER upd_site BEFORE UPDATE ON site
FOR EACH ROW SET NEW.last_update_date = CURRENT_TIMESTAMP();

它工作正常,但我只是注意到 JPA http://www.objectdb.com/java/jpa/persistence/event 中有一些回调方法

JPA 事件和 MySql 触发器之间最好的是什么?

谢谢。

最佳答案

没有最好的事情。数据库触发器将在每次更新行时更新最后更新日期,无论使用何种方式更新行(Hibernate、JDBC 查询或数据库管理工具的更新)。仅当使用 JPA 更新行时才会调用 JPA 回调。您可能想要其中之一。

另一个区别是 JPA 不知道数据库执行的触发器。因此,如果您更新实体中的某些字段,并且 JPA 刷新了更改,则触发器将修改更新日期,但 JPA 实体将在内存中保留更新日期的旧值。因此,如果更新后在 GUI 中显示此更新日期,则更新日期将不正确。您必须刷新实体才能获取最新更新日期。

关于触发器与 JPA 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136042/

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