【发布时间】:2012-01-21 15:24:07
【问题描述】:
我正在使用 Play! 1.2.4 和 PostgreSQL 9.1。我创建了一个带有created_at 列的表,类型为:timestamp without time zone。它的默认值为now()。
当我使用该表的 Entity 类获取数据时,问题就出现了。 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)
);
更新:
我认为问题与使用 JPA 插入记录有关。数据库为created_at 填充默认值now(),但不知何故,Hibernate 在获取该行时并不知道它。
如果我查询已存在的行,createdAt 字段将正确填充!
好的...这缩小了问题范围。
【问题讨论】:
标签: postgresql jpa playframework