【发布时间】:2018-03-12 06:44:53
【问题描述】:
我想插入数据,自动插入 created_at 日期时间和相应的 updated_at 日期时间。
我有一个pojo:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "name")
private String name;
@Basic(optional = false)
@CreationTimestamp
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@UpdateTimestamp
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
在我的数据库中,我使用 DATETIME 作为 created_at 和 updated_at 的类型。但我无法插入数据,而是给出错误消息 not-null property references a null or transient value: com.project.test.entity.Stamp.createdAt.
我想知道为 created_at 和 updated_at DateTime 字段定义数据库架构以使其自动生成的正确方法。
【问题讨论】:
-
将mysql中的列更改为时间戳:
ALTER TABLE yourTable CHANGE COLUMN created_at created_at TIMESTAMP NOT NULL DEFAULT now();updated_at相同,但没有默认的 now()。无论如何,如果你使用的是休眠,你为什么要创建你的数据库?你为什么不让hibernate为你做呢? -
我尝试将 DATETIME 更改为 TIMESTAMP 类型并将默认值更改为 CURRENT_TIMESTAMP 但仍然存在同样的问题。与 updated_at 相同,仅将 Extra 字段中的更改为 on_update_current_timestamp 和 Default value = None。但是我的问题没有运气。 @JorgeCampos
标签: java mysql spring hibernate