当前位置: 首页 > 知识库问答 >
问题:

无法使用@UpdateTimestamp注释更新时间戳

谈旺
2023-03-14
@UpdateTimestamp
    @Column(name="UPDATE_TIME_STAMP")
    private LocalDateTime updateTimeStamp;

@CreationTimestamp
    @Column(name="POLICY_ISSUE_DATE")
    private LocalDateTime policyIssueDate;

你好,我是hibernate的新手,我的实体和数据库中都有以上字段。然而,对于我的Dao方法,我从SpringBoot控制器访问它,它不更新数据库中的UPDATE_TIME_STAMP字段,而用下面的方法执行查询更新。

@Override
    public int updatePolicyStatus(String status,int policyNumber) {
        Query query = entityManager.createQuery("UPDATE Policy p SET POLICY_STATUS=:status where POLICY_NUMBER=:policyNumber");
        query.setParameter("status",status);
        query.setParameter("policyNumber", policyNumber);
        return query.executeUpdate();
    }

另外,如果我尝试合并实体,它试图更新creationTimeStamp与NULL,这是在结束时失败,因为我保持我的POLICY_ISSUE_DATE为非NULL在数据库中。

@Override
    public void updatePolicy(Policy policy) {
        entityManager.merge(policy);

    }

所以我如何在使用合并(策略)时避免创建时间戳的 NULL 值,以及为什么它更新时间戳不使用 executeUpdate() 更新。

共有2个答案

邓毅
2023-03-14

@sai您可以将@Column(可更新=false)添加到您的policyIssueDate。因此,在更新行时,它不会更新为null。

诸俊才
2023-03-14

您需要将下面显示的注释添加到您的模型/实体类中。你能检查一下这个并让我知道它对你是否有效吗?在我的申请中,我已经用了很多次了,效果非常好。希望这对你也有用。

@UpdateTimestamp
@Column(name = "data_update_time")
@Temporal(TemporalType.TIMESTAMP)
private Date dataUpdateTime;
 类似资料:
  • 我是匕首2和科特林的新手。获取未初始化的延迟属性。 我有一个模块,它有几个@Provides方法,但其中一个类无法创建使用@Inject和lateinit的对象。 登录服务以“LoginAPI”为参数,工作正常,但我希望所有与登录相关的API都使用相同的服务。还有一个与API相关的“LoginWithOrgAPI”。 现在我的需求是在LoginService类中获取任何需要时的API对象。所以我尝

  • 请让我知道,如何使用带注释的映射器在mybatis中执行批插入/更新。

  • 下面是我的代码, 我无法用注释来注释类, Netbean IDE说注释类型不适用于这种声明。 我用netbeans运行JDK 1.6和Jaxb 1.5。 感谢您的任何帮助。

  • 问题内容: 是否可以强制不在前面添加日期注释?我的意思是像这里的第一行: 我想完全摆脱它。除非进行 有意义的 更改,否则我的配置文件必须完全相同。 问题答案: 给定源代码或属性,不行,这是不可能的。顺便说一句,由于Properties实际上是一个哈希表,并且因此其键没有进行排序,因此无论如何您都不能依赖于属性始终保持相同的顺序。 如果有此要求,我将使用自定义算法来存储属性。使用Properties

  • 我正在尝试使用注册功能组件中的useState更新组件的状态。当用户输入无效的电子邮件地址并单击“提交”按钮时,以下代码将返回错误消息 我想用这段代码将错误消息设置为formData。 如何将错误消息设置为formData? 这是我的密码:

  • 无法用[class java.lang.String]注入@test注释方法[launchB]. 下面是代码: