【问题标题】:Always save date to today's date in database using jhipster始终使用 jhipster 将日期保存到数据库中的今天日期
【发布时间】:2018-03-21 21:02:24
【问题描述】:

我使用 jhipster-jdl.jh 文件在 jhipster 中创建了一个实体,如下所示:

entity EmployeeLeave{
    appliedDate LocalDate required,
    fromDate    LocalDate required,
    toDate  LocalDate required,
    status String
}

从这些字段中,我希望将应用日期作为数据库(MySql)中的今天日期。 我在 jhipster 代码中从 Angular 方面尝试过这个,但没有一个有帮助。

有没有什么办法可以让在为employeeLeave 创建记录时,applyDate 总是等于今天的日期。 最好我想要Angular方面的解决方案。也欢迎其他解决方案。

技术:

数据库:Mysql, 弹簧靴, 角4, 吉普斯特。

【问题讨论】:

  • 您可以在创建数据库表时应用默认值
  • 如果你使用hibernate你可以使用@PrePersist注解。

标签: java mysql angular spring-boot jhipster


【解决方案1】:

您可以在班级中初始化您的日期:

public class EmployeeLeave{
   LocaleDate yourDate = LocaleDate.now();
   //other fields
}

所以,appliedDate 将永远是今天的日期。我正在使用 Java 8,但想法就在这里。

【讨论】:

  • 正确。我建议始终传递可选的ZoneId,而不是隐式依赖 JVM 当前的默认时区。在运行期间的任何时刻,该JVM中的任何应用程序中的任何线程都可以更改默认值,因此它是不可靠的。
【解决方案2】:

LocaleDate.now() 是服务器时间。如果服务器在用户之外的另一个时区,可能会插入错误的日期。 在 .controller.js 中定义日期不是更好吗:

                        var now = new Date();
                        vm.employeeLeave.appliedDate=now;
                        vm.isSaving = true;
                        EmployeeLeave.update(vm.employeeLeave, onSaveSuccess, onSaveError);

?

【讨论】:

  • 当我在 jhipster 中开发应用程序时,jhipster 间接创建 BaseEntity 并将其继承到我的 EmployeeLeave 中。因此,在某些条件下直接将值绑定到组件中的变量,因此无法直接保存应用日期。另外,在发布此问题之前,我已经尝试过此选项。
猜你喜欢
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多