- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要用 createdDate 和 updatedDate 更新 postgres 数据库我尝试使用方法 1,但它插入的是空值。当我阅读时,@prepersist 注释似乎不适用于 session 。
所以我决定采用方法 2:Hibernate @CreationTimeStamp 注解,我添加了 hibernate-annotations maven 依赖项,但 @CreationTimeStamp 未解析并给出编译错误。
有人可以告诉我如何解决这个问题吗?
方法一使用@Entity 和@Table 注解的实体类
public class Status{
@Id
@Column(name = "run_id")
private int run_id;
@Column(name = "status")
private String status;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_date" , updatable=false)
private Date created;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated_date" , insertable=false)
private Date updated;
@PrePersist
protected void onCreate() {
created = new Date();
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
//Getters and setters here
}
实现类是
sessionFactory.getCurrentSession().save(status);
方法二 使用@CreationTimeStamp 和@updatedTimeStamp。但是maven依赖
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-annotations -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.0-Final</version>
</dependency>
不将这些注释添加到类路径
最佳答案
您使用 session.save() 方法而不是 entitymanager 有什么原因吗?我将发布一个使用实体管理器来持久化和合并实体的应用程序示例。我也在使用 java.time.LocalDateTime
而不是 java.util.Date
,这就是为什么我不需要 @Temporal
.
这也可能有帮助:How to use @PrePersist and @PreUpdate on Embeddable with JPA and Hibernate如果您想使用实体管理器,这将有所帮助:Guide to the Hibernate EntityManager实体类:
public abstract class AbstractEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(updatable = false, nullable = false)
private Long id;
@Column
private LocalDateTime createdTimestamp;
@Column
private LocalDateTime modifiedTimestamp;
@Version
private Long version;
@PrePersist
public void setCreationDateTime() {
this.createdTimestamp = LocalDateTime.now();
}
@PreUpdate
public void setChangeDateTime() {
this.modifiedTimestamp = LocalDateTime.now();
}
//Getter and setter
}
抽象数据库服务类:
public abstract class AbstractDatabaseService {
@PersistenceContext(name = "examplePU")
protected EntityManager entityManager;
}
示例实体存储库接口(interface):
public interface ExampleRepository {
ExampleEntity save(ExampleEntity exampleEntity);
}
示例实体存储库实现:
public class ExampleRepositoryImpl extends AbstractDatabaseService implements ExampleRepository , Serializable {
@Transactional
@Override
public ExampleEntity save(ExampleEntity exampleEntity) {
ExampleEntity toPersist;
// Updating an already existing entity
if (exampleEntity.getId() != null) {
toPersist = entityManager.find(ExampleEntity .class, exampleEntity.getId());
// Omitted merging toPersist with the given exampleEntity through a mapper class here
} else {
toPersist = exampleEntity;
}
try {
toPersist = entityManager.merge(toPersist);
} catch (Exception e) {
// Logging e
}
return toPersist;
}
}
希望这对您有所帮助。
关于spring - 在spring + hibernate中保存creationTimestamp和updatedTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57769936/
所以我使用 Hibernate 的注释 @CreationTimestamp 和 @UpdateTimestamp。它工作正常,但我在单元测试时遇到这种情况,我需要在特定日期创建对象。 我认为不可能停
这是我的博客类(class) @Entity @Component @Table public class Blog implements Serializable { /** * */ priv
使用以下两个来存储更新和创建时间。 @CreationTimestamp private Timestamp creationTime; @UpdateTimestamp private Timest
在我的实体中,我有字段: @UpdateTimestamp @Column private java.util.Calendar modifiedDate; @CreationTimestamp @C
有没有理由添加注解。而不是。除了数据库架构生成之外?无论如何,值将由DB设置。。此外,CreationTimestamp与不可变不可分,并导致错误JpaSystemException:不支持锁定模式
我试图在我的数据库中设置一个字段来写入修改行的日期。为此,我使用了 Hibernate 提供的注解。 当我通过 POST 方法创建行时,它工作正常。它用相同的值(显然)填充两列(创建和修改)。 当我更
我正在尝试将 @CreationTimestamp 和 @UpdateTimestamp 与 LocalDateTime 类型一起使用,但它给了我 org.hibernate。 HibernateEx
这是我的标签和帖子实体类: @Entity class Tag( @get:NotBlank @Column(unique = true) val na
我正在使用 Hibernate 和 MySQL 制作 Spring MVC 应用程序。我的一个 MySQL 表中有一个 TIMESTAMP 列,其定义如下 tstamp timestamp defau
我是一名优秀的程序员,十分优秀!