在ORACLE中,CHAR类型的字段值会自动补足空格。所以当其作为条件时,就有可能查不出想要的数据。
如果不允许改DB设计的话,那就用 RTRIM来解决吧。
DB:
CREATE TABLE TEST
(
TEST_ID VARCHAR2(64) NOT NULL,
TEST_CHAR CHAR(10),
CONSTRAINT TEST_ID PRIMARY KEY (TEST_ID)
);
INSERT INTO TEST VALUES('1','a');
测试代码:
Session session = factory.getCurrentSession();
session.beginTransaction();
List list = session.createQuery("FROM Test WHERE RTRIM(TEST_CHAR) = 'a'").list();
session.close();