繁体   English   中英

休眠-记录日期属性首先获得数据

[英]Hibernate - record date attribute first got data

我想记录实体中的属性首次获取数据的日期。

例如:

@Entity
public class Sales(){

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String salesNote;

    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date salesNoteCreationDate;
}

我尝试通过比较以下方法在服务层中做到这一点:

    if (!saleView.getsalesNote().isEmpty() && saleDb.getPlan().getNotes().isEmpty()) {
        Date salesNoteCreationDate = new Date();
        saleView.setsalesNoteCreationDate(salesNoteCreationDate);
    }

这只有一半有效,因为没有将salesNoteCreationDate发送到UI,如果上述测试失败并且未设置日期,则saleViewnullsaleView覆盖可能保存有效日期的saleDb值。

我怀疑通过使用@Version或Hibernate Listener可以有一种更简单的方法-查看过Hibernate文档后 ,在这个特定问题上我并不明智。

您为什么不把这个逻辑放在它所属的地方:封装在实体中,而不是在UI中?

@Entity
public class Sale {

    private String note;

    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date noteCreationDate;

    public void setNote(String note) {
        if (this.note == null && note != null) {
            this.noteCreationDate = new Date();
        }
        this.note = note;
    }
}

请注意,我将您的实体重命名为Sale(因为该类的一个实例可能代表一个销售,而不是多个销售)。 另请注意,我在您的字段(即Sale类的字段)上删除了sales前缀,从而使此前缀变得多余。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM