我们将JPA与JavaD EE后端软件一起使用,该软件具有GenericDAO类。调用javax.persistence.EntityManager.persist(t)的方法返回我们刚刚写入PostgreSQL数据库的对象“ t”(我们希望在REST调用响应中将其交付给前端)。来自数据库的数据集正在映射到我们自己的@Entity“ Message”类。
返回的对象为我提供了除时间戳之外存储在数据库中的所有数据。示例:
Field messageID: 751 Type: long
Field messageText: test Type: class java.lang.String
Field timestamp: null Type: class java.sql.Timestamp
...
时间戳不是由我们的代码生成的,而是由数据库生成的。我们在@Entity“ Message”类中定义它,如下所示:
@Column(nullable = false, updatable = false, insertable = false, columnDefinition = "TIMESTAMPTZ DEFAULT NOW()")
private Timestamp timestamp;
“ MessageID”也由PostgreSQL生成,并已正确返回。在数据库内部,时间戳设置正确。 调用EntityManager.createQuery(query).getSingleResult()方法还会返回有效的时间戳。
有人可以告诉我为什么我尝试通过使用persist(t)检索时间戳时为何得到“ null”吗?