我在Oracle中使用Hibernate和char(6)列有点麻烦。下面是表的结构:在Oracle的CHAR主键列上休眠和填充
CREATE TABLE ACCEPTANCE
(
USER_ID char(6) PRIMARY KEY NOT NULL,
ACCEPT_DATE date
);
对于其用户ID具有少于6个字符的记录,我可以选择它们而不使用SQuirreL运行查询时填充的用户ID。 I.E.如果有一个用户标识为“abc”的记录,则返回记录。
select * from acceptance where user_id = "abc"
不幸的是,通过休眠(JPA)在做选择的时候,下面的返回null:
em.find(Acceptance.class, "abc");
如果我垫的价值,虽然,它返回正确的记录:
em.find(Acceptance.class, "abc ");
我正在处理的模块从系统的其他部分获取用户标识未加注释。有没有更好的方式让Hibernate工作,而不是在将代码提供给Hibernate之前将代码调整为一定的长度以外的代码? (如果长度有变化,可能会出现维修问题)
“如果长度过变化。”如果发生这种情况,您的主键会发生变化,您会发现很多问题需要担心。 – 2009-12-15 23:41:38