我在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