我是spring的新手,我对@CreatedDate annotation在实体中的工作方式感到困惑。
我做了一个谷歌搜索,有很多解决方案,但没有一个对我有效,除了一个。我很困惑为什么?
这是我先试的
@Entity
@EntityListeners(AuditingEntityListener.class)
public class User implements Serializable {
@Id
@GeneratedValue
private Long id;
private String name;
@CreatedDate
private Date created;
public User(String name) {
this.name = name;
}
public User() {
}
字符串
但没有成功。created
列中的值为NULL。
然后我做了这个。
@Entity
@EntityListeners(AuditingEntityListener.class)
public class User implements Serializable {
@Id
@GeneratedValue
private Long id;
private String name;
@CreatedDate
private Date created = new Date();
public User(String name) {
this.name = name;
}
public User() {
}
型
这实际上将时间戳存储在数据库中。我的问题是我遵循的大多数教程建议我不需要new Date()
来获取当前时间戳。看起来我确实需要那个。有什么我遗漏的吗?
6条答案
按热度按时间8ehkhllq1#
我也有这个问题,你的解决方案帮助了我,谢谢,我添加了一些其他的注解工作
首先确保你把SpringApplication配置
字符串
其次,确保在所需的实体上使用此注解
型
8nuwlpux2#
如果你只是把
@EntityListeners(AuditingEntityListener.class)
放在你的实体上,@CreatedDate
本身是不会工作的。为了让它工作,你必须做更多的配置。假设在您的数据库中,
@CreatedDate
的字段是String类型,并且您希望返回当前登录的用户作为@CreatedDate
的值,然后执行以下操作:字符串
您可以在那里编写任何适合您需要的功能,但是您肯定必须有一个引用实现
AuditorAware的类的bean 第二部分同样重要,是创建一个bean,返回带有
@EnableJpaAuditing`注解的类,如下所示:型
如果您毒药是XML配置,请执行以下操作:
型
9fkzdhlc3#
您可以像这样使用@creationTimestamp和@UpdateTimestamp:
字符串
qc6wkl3g4#
如果你想使用java8时间类:
字符串
l2osamch5#
如果不使用JPA Entity listener,创建日期将无法工作,因为这是JPA进行审计和创建或修改日期的方式。
只需修改如下代码:
字符串
fd3cxomn6#
根据代码添加@EnableMongoAuditing或@EnableJpaAuditing