当前位置: 首页 > 面试题库 >

使用Hibernate和MySQL的创建时间戳和最后更新时间戳

丁勇
2023-03-14
问题内容

对于某些Hibernate实体,我们需要存储其创建时间和上次更新时间。你将如何设计?

  • 你将在数据库中使用什么数据类型(假设使用MySQL,可能与JVM时区不同)?数据类型是否支持时区?

  • 你会在Java中使用什么数据类型(Date,Calendar,long,…)?

  • 你将由谁负责设置时间戳(数据库,ORM框架(hibernate)或应用程序程序员)?

  • 你将使用哪些注释进行映射(例如@Temporal)?

我不仅在寻找可行的解决方案,而且还在寻找安全且设计良好的解决方案。


问题答案:

你可以使用@CreationTimestamp@UpdateTimestamp:

@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date")
private Date createDate;

@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "modify_date")
private Date modifyDate;


 类似资料:
  • 问题内容: 我在玩JPA(具体来说是Eclipselink)。下面的实体具有一个时间戳,应该在该实体上次更新时反映该时间戳。 每次更改此实体时,使JPA自动更新该时间戳的策略是什么? 如果我还想要一个“创建”时间戳记,该时间戳记仅在实体首次保留时设置,而永远不允许再次更改,该怎么办? 问题答案: 使用@PrePersist和@PreUpdate批注并编写您自己的事件侦听器。 详细了解一下此答案。它

  • 问题内容: 我在SO上看到过类似类型的问题,但是,我无法找到针对我特定问题的解决方案。(仅供参考,这些不是我的真实专栏,只是一个简短的示例)。 我有一个基本表: 因此,我想做的是能够: 我已经尝试过类似的东西: 但这不会返回我要查找的行。修复此查询的任何帮助都将非常有用。 非常感谢。 问题答案: 编辑: 顺便说一句,如果您想知道为什么原来的查询不起作用,让我们分解一下: 从…中选择一些东西 其中=

  • 我正在使用Spring Cloud Sleuth和Zipkin(通过HTTP),将spring-cloud-starter-zipkin版本2.0.0.M6添加到我的依赖项(基于Spring Boot 2.0.0.rc1和Spring Cloud Finchley M6)中。 我正在使用@Newspan注释来标记某个(昂贵的)操作的子跨度。当跨度信息发送到Zipkin时,我注意到缺少子跨度的时间戳

  • 数据库有个字段时时间戳格式的,现在前台传过来的参数类型是【0500】这样的String,怎么能用SQL做到用传来的String参数只更新这个字段的时和分的部分,使结果变成【2023-10-16 05:00:00】?

  • 问题内容: 我想定义具有2个TIMESTAMP字段的表,如下所示: 如何避免错误: 重点是保持表架构中和的所需行为。 问题答案: 猜猜这是一个老帖子,但实际上我想mysql在其最新版本中支持2 TIMESTAMP mysql 5.6.25,这就是我目前使用的时间。

  • 问题内容: 我正在构建一个新的Web应用程序,并且正在使用Spring,JPA / Hibernate和Postgres。我的某些表具有creation_ts和lastupdate_ts列,它们是时间戳列,用于跟踪何时发生插入以及何时在行中进行最后更新。 我还在表中的列使用命名约定,因此,根据设计策略,每个表都保证有两列pkey(这是整数代理键)和用于乐观锁定的版本。 我有两种方法可以使这些字段保