【发布时间】:2010-12-26 22:32:51
【问题描述】:
我在 Oracle 中使用带有 char(6) 列的 Hibernate 时遇到了一点问题。这是表的结构:
CREATE TABLE ACCEPTANCE
(
USER_ID char(6) PRIMARY KEY NOT NULL,
ACCEPT_DATE date
);
对于用户 ID 少于 6 个字符的记录,我可以在使用 SQuirreL 运行查询时选择它们而无需填充用户 ID。 IE。如果存在用户 id 为“abc”的记录,则以下返回记录。
select * from acceptance where user_id = "abc"
不幸的是,当通过 Hibernate (JPA) 进行选择时,以下返回 null:
em.find(Acceptance.class, "abc");
如果我填充值,它会返回正确的记录:
em.find(Acceptance.class, "abc ");
我正在处理的模块从系统的其他部分获取用户 ID。有没有更好的方法让 Hibernate 工作,而不是在将用户 ID 提供给 Hibernate 之前将其调整为特定长度? (如果长度发生变化,可能会出现维护问题)
【问题讨论】:
-
“如果长度发生变化”。如果发生这种情况,您的主键会发生变化,您需要担心更多问题。