1

我刚开始使用 Play 框架,我有一些问题......

一些背景资料。我正在使用带有 Ebean 的 Play 2.0.4 来存储实体。我的用户实体有 2 个字段,一个称为 created_on,另一个称为 updated_on。两者都是 java.util.Date。我的问题是,创建“created_on”变量的最佳位置是什么?我目前在用户模型中将其写为

 public Date created_on = new Date();

这是放置它的最佳位置吗?我想将格式设置为“dd-MM-yyyy”。我目前使用

 @Formats.DateTime(pattern="dd-MM-yyyy")

但这似乎不起作用, created_on 仍然打印为“Wed Jan 23 16:41:21 EST 2013”​​。另外,我想在每次更新时将 updated_on 字段修改为当前时间,我应该在哪里编码?我该怎么做?

非常感谢你

4

2 回答 2

1

您有两个选择——在数据库端为字段添加默认值,CURRENT_TIMESTAMP或者像现在一样做——在对象初始化时设置默认值。我更喜欢后者,因为这样我在保存后就有了实体中的日期,而无需从数据库中刷新它。

于 2013-01-23T06:54:22.857 回答
1

尽管您可以使用您的技巧,createdOn但您将无法updatedOn对更新操作执行相同的操作 - 在这种情况下,最快的解决方案可能是覆盖save()update(Object o)在您的模型中使用方法来执行相同的任务:

/**
 * Set default data while saving
 */
public void save() {
    this.createdOn = new Date();
    this.updatedOn = new Date();
    super.save();
}

/**
 * Set default data while updating
 */
public void update(Object o) {
    // here you don't want to change createdOn value anymore
    this.updatedOn = new Date(); 
    super.update(o);
}
于 2013-01-23T07:59:29.977 回答