【问题标题】:How to pick oracle current_timestamp when saving grails domain object保存grails域对象时如何选择oracle current_timestamp
【发布时间】:2020-01-01 20:24:55
【问题描述】:

我正在使用 Grails 2.4.0 版、java 1.7 版和 oracle 12c。

我想将apiEventLogList的记录持久化到数据库表中。我不想在 java 中设置 createdTs 字段,而是在 GORM 将记录保存在数据库中时选择其中的 oracle CURRENT_TIMESTAMP 值。

class ApiEventLog {
    private Date startTs;
    private Date finishTs;
    private Date createdTs; 
}

apiEventLogList.each { it ->
    it.setStartTs(ApiEventLog.prevFinishTime)
    it.setFinishTs(currentDate)
    it.setCreatedTs(new Date())
    it.save()
}

【问题讨论】:

    标签: oracle hibernate grails grails-orm


    【解决方案1】:

    我想在 GORM 时选择其中的 oracle CURRENT_TIMESTAMP 值 将记录保存在数据库中

    如果您的域类中有 Date dateCreated 属性,GORM 会在您保存实例时为您初始化该字段。

    有关详细信息,请参阅https://grails.github.io/grails2-doc/2.4.1/guide/GORM.html#eventsAutoTimestamping 上的自动时间戳部分。

    【讨论】:

    • 请注意,这与引用 Oracles CURRENT_TIMESTAMP 并不完全相同。使用我们的自动时间戳会导致 dateCreated 属性在保存事物时有效地使用 new Date() 进行初始化,但这发生在应用程序中,而不是在数据库中。如果运行 Grails 应用程序的机器上的时钟与运行 Oracle 实例的机器上的时钟不同,并且您关心这种差异,那么自动时间戳功能不会让您得到您想要的想要。
    • 是的,杰夫,这不会给出 oracle 日期,就我而言,我正在寻找 oracle 服务器日期。
    • 那么答案是 GORM 不支持。您必须向 Oracle 发送请求以获取那里的日期,然后使用它来初始化域类中的属性,您只需要处理由网络流量引起的时间差异,这可能并不重要. GORM 不会参与其中。
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2014-06-07
    • 1970-01-01
    • 2013-09-15
    • 2013-10-14
    • 2011-05-09
    相关资源
    最近更新 更多