Не удается обновить отметку времени с аннотацией @UpdateTimestamp - PullRequest
0 голосов
/ 01 мая 2019
@UpdateTimestamp
    @Column(name="UPDATE_TIME_STAMP")
    private LocalDateTime updateTimeStamp;

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

Здравствуйте, я новичок в спящем режиме. У меня есть поля выше как в моей сущности, так и в базе данных. Однако для моего метода 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 как NOT NULL в базе данных.

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

    }

Итак, как избежать значения NULL для creationTimeStamp при использовании merge (policy), а также почему обновление updateTimeStamp не выполняется с executeUpdate ().

1 Ответ

0 голосов
/ 01 мая 2019

Вам нужно добавить показанную ниже аннотацию в свой класс модели / сущности. Можете ли вы проверить это и сообщить мне, работает ли он для вас или нет. В моем приложении я использовал его несколько раз, и он работает как масло Надеюсь, это сработает и для вас.

@UpdateTimestamp
@Column(name = "data_update_time")
@Temporal(TemporalType.TIMESTAMP)
private Date dataUpdateTime;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...