我在使用Hibernate与Oracle中的char(6)列时遇到了一些问题。这是表的结构:
CREATE TABLE ACCEPTANCE
(
USER_ID char(6) PRIMARY KEY NOT NULL,
ACCEPT_DATE date
);
如果用户ID少于6个字符,我可以在使用SQuirreL运行查询时选择它们而无需填充用户ID。例如,如果有一个用户ID为"abc"的记录,则以下语句将返回该记录。
select * from acceptance where user_id = "abc"
很不幸,当通过Hibernate(JPA)执行select时,下面的语句返回null:
em.find(Acceptance.class, "abc");
如果我填充值,它会返回正确的记录:
em.find(Acceptance.class, "abc ");
我正在处理的模块从系统的其他部分获取未填充的用户ID。除了在将其提供给Hibernate之前编写适应用户ID长度的代码(如果长度发生变化可能会带来维护问题),是否有更好的方法使Hibernate正常工作?