如何将时间戳列映射到JPA类型?

2023-11-27

我正在使用“玩”! 1.2.4 和 PostgreSQL 9.1。我创建了一个表created_at列,类型:timestamp without time zone。它的默认值为now().

当我使用该表的实体类获取数据时,问题就出现了。这createdAt场总是会回来的null。这是字段定义:

@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;

所有其他字段均已正确填充。我尝试将字段类型更改为Date, Calendar, Timestamp等,并尝试添加@Timestamp注解。但没有任何组合被证明是成功的。

预先感谢您的任何帮助!

作为参考,这里是我用来创建表的 DDL。

CREATE TABLE Users
(
  id serial     NOT NULL,
  username text NOT NULL,
  email text    NOT NULL,
  password_hash text NOT NULL DEFAULT 0,
  created_at timestamp without time zone DEFAULT now(),
  CONSTRAINT Users_pkey PRIMARY KEY (id),
  CONSTRAINT Users_username_key UNIQUE (username)
);

Update:我认为问题与使用 JPA 插入记录有关。数据库填充默认值now() for created_at,但不知何故 Hibernate 在获取该行时并不知道这一点。

如果我查询已经存在的行,createdAt字段已正确填充! 好的...这缩小了问题的范围。


我没有完全解决这个问题,但我解决了它。

而不是让数据库提供默认值now(),我用JPA表达它@PrePersist:

@Column(name="created_at", nullable=false)
@Temporal(TemporalType.TIMESTAMP)
public Date createdAt;

@PrePersist
protected void onCreate() {
    createdAt = new Date();
}

效果很好!灵感取自这个答案。 我仍然不确定为什么 Hibernate 没有使用数据库中应用的默认值进行更新。它被认为该值仍然为空。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将时间戳列映射到JPA类型? 的相关文章

随机推荐

  • Ansible:在任务运行时累积跨多个主机的输出

    我有以下剧本 hosts all gather facts False tasks name Check status of applications shell somecommand register result changed wh
  • WCF AfterReceiveRequest 获取标头

    我刚刚开始拦截对 WCF 服务的请求 我正在使用如下所示的 java 代码调用 Web 服务 简短版本 connection HttpURLConnection url openConnection connection setReques
  • python MySQLDB查询超时

    我正在尝试对 python MySQLDB 中的查询强制执行时间限制 我遇到的情况是 我无法控制查询 但需要确保它们不会运行超过设定的时间限制 我尝试使用 signal SIGALRM 来中断执行调用 但这似乎不起作用 信号被发送 但直到执
  • 使用 naudio 播放 .wav 文件,播放 1 秒后停止

    我正在 C 中使用 naudio lib 并且想要播放一个简单的文件 问题是 播放1秒后停止 我无法弄清楚它这样做的原因 using System using System Collections Generic using System
  • 如何将cognito用户信息传递给lambda?

    我正在开发基于API网关和Lambda的应用程序 我将 POST subscribe 配置为 AWS IAM 所以现在它无法直接访问 但我可以通过 Cognito 身份验证访问 API 现在的问题是我的 Lambda 不知道谁是 API 调
  • 在Python3中正确地将字节转换为字符串并返回?

    给定一个随机字节 即不仅仅是数字 字符 我需要将其转换为字符串进而回到初始字节而不丢失信息 这似乎是一项基本任务 但我遇到了以下问题 假设 rnd bytes b w x12 x96 xb8 len rnd bytes prints 4 现
  • 使用 CAShapeLayer 和 UIBezierPath 剪辑遮罩 uiview

    我在使用 CAShapeLayer UIBezierPath 剪切视图时遇到问题 我想剪切内容 但最终得到了 UIBezierPath 的笔画 框架 这是我的代码 UIBezierPath path2Path UIBezierPath be
  • 将字符串解析为日期时间,同时考虑 pandas 中的 AM/PM

    我正在尝试解析这种格式的字符串 2018 07 07 04 AM 使用 strftime 格式转换为 pandas 日期时间 但是 在我看来 该格式无法识别之间的区别AM and PM 这是我尝试过的 pd to datetime 2018
  • 如何检查某个目录是否位于 Bash 的路径上? [复制]

    这个问题在这里已经有答案了 可能的重复 Bash 检测用户的路径中是否有特定目录 给定一个目录 如何确定它是否在 unix PATH 上 正在寻找 shell 脚本 谢谢 凯文 你可以写 if PATH directory you want
  • 如何更改 ggplot 中的标签(图例)?

    我的代码如下 我想更改ggplot的标签 但R总是提醒我 Error in unit tic pos c mm x and units must have length gt 0 我应该怎么办 ggplot mat aes x sales
  • 如何唤醒休眠的 pthread?

    我正在用 C 编写一个程序 我注意到它获得了许多线程 其目的是每隔一段时间做一些事情 其中 有 3 或 4 个 我决定通过编写一个调度程序服务来重构 使用这些线程的其他地方可以订阅该服务 这应该将我随时运行的额外事件线程的数量减少到一个 我
  • 将 TOP 与 GROUP BY 一起使用

    带桌子table1像下面这样 flight orig dest passenger bags 1111 sfo chi david 3 1112 sfo dal david 7 1112 sfo dal kim 10 1113 lax sa
  • std::throw_with_nested 需要 C++11 中的多态类型吗?

    为什么不能编译 尝试使用 Clang 3 4 2 和 GCC 版本 4 7 4 4 8 3 和 4 9 1 include
  • 从外部 div 滚动 div

    查看下面的小型 html 结构示例以了解上下文 看看这个fiddle问题的示例 对小提琴用户的简短说明 向左滚动 垂直滚动条不可见 向右滚动 垂直可见 我希望垂直滚动条始终可见 要求 标题必须保持固定 滚动时可见 长解释 我有一个带有固定标
  • C++:模板和单例模式

    碰巧我需要臭名昭著的单例模式 更好的是 它发生了 所以我需要臭名昭著的 C 模板与该模式的结合 那么 让我烦恼的是 template
  • 事件调度程序应每月执行一次

    我的机器上安装了 Win XP 操作系统和 XAMPP 我需要在每月第一天的凌晨 12 00 00 执行我的事件 调度程序 意思是每个月的1号 例如 1 月 1 日 2 月 1 日 3 月 1 日 和 我还需要在同一事件中调用存储过程 我想
  • 如何在生产中管理 ASP.NET SQL 成员角色/用户?

    如何在生产计算机上设置 asp net sql 成员资格角色 成员资格提供程序 我正在尝试设置 BlogEngine NET 所有文档都说要使用 Visual Studio 中的 ASP NET 网站管理工具 但这在生产计算机上不可用 我是
  • ExtJS按钮样式工具栏[重复]

    这个问题在这里已经有答案了 我想知道是否可以将按钮放入面板的工具栏中 但让它保留按钮的外观 就好像它只是在普通面板中一样 例如 我希望按钮看起来像这样 然而 它看起来像这样 非常感谢 EDIT 创建工具栏的代码 xtype toolbar
  • 稳健的多边形法线计算

    是否有一个好的鲁棒算法来计算凸多边形的法向量 当然是3D 对于三角形 这很容易 取三角形的两条边并计算叉积 vec3 u point 0 point 1 v point 0 point 2 vec3 n normalize cross u
  • 如何将时间戳列映射到JPA类型?

    我正在使用 玩 1 2 4 和 PostgreSQL 9 1 我创建了一个表created at列 类型 timestamp without time zone 它的默认值为now 当我使用该表的实体类获取数据时 问题就出现了 这creat