2010-04-29 29 views
3

0投票下降之星如何檢查在休眠標準中區分大小寫

我已經使用hibernate從mysql數據庫中獲取登錄信息。但問題是,例如,用戶名是數據庫中的'dhiraj',現在通過輸入用戶名登錄成功,但它也允許通過以大寫字母輸入用戶名來輸入,例如'DHIRAJ 」。我想限制它在數據庫中的位置。你能告訴我如何在冬眠狀態下實現這個功能嗎?

+0

我使用下面的代碼,但它不檢查區分大小寫。 Restricted_User user =(Restricted_User)session.createCriteria(Restricted_User.class).add(Restrictions.eq(「user_id」,input.get(「username」))) .add(Restrictions.eq(「password」,input .get(「password」))) \t \t .uniqueResult(); – dhiraj 2010-04-29 07:54:46

回答

1

我不認爲冬眠是這裏的問題。

您使用的數據庫是? (你應該重申你的問題,至少要添加你使用的數據庫實現)。

例如,默認情況下,mysql不區分大小寫。看看這裏:http://mysqldatabaseadministration.blogspot.com/2006/09/case-sensitive-mysql.html關於如何讓mysql做大小寫敏感的比較。

編輯: 就像我已經貼的鏈接說,你可以在表創建做,通過設置一個特殊的字符集,這樣的:

########### 
# Start case sensitive collation example 
########### 

mysql> create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs; 
Query OK, 0 rows affected (0.08 sec) 

mysql> INSERT INTO case_cs_test VALUES ('Frank'),('Google'),('froogle'),('flickr'),('FlicKr'); 
Query OK, 5 rows affected (0.00 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> SELECT * FROM case_cs_test WHERE word LIKE 'F%'; 
+---------+ 
| word | 
+---------+ 
| Frank | 
| FlicKr | 
+---------+ 
4 rows in set (0.00 sec) 

mysql> SELECT * FROM case_cs_test WHERE word LIKE 'f%'; 
+---------+ 
| word | 
+---------+ 
| froogle | 
| flickr | 
+---------+ 
2 rows in set (0.00 sec) 

########### 
# end 
########### 
+0

雅我只使用mysql數據庫,我沒有找到任何方式如何實現大小寫敏感的問題,實際上起初我認爲這是一個休眠問題,但正如你指出它可能是MySQL的情況。現在您可以在數據庫級別告訴我,我們如何檢查? – dhiraj 2010-04-29 14:04:31

+0

你能告訴我,我是否可以在mysql級別設置它,以便休眠總是選擇用戶表的user_id列作爲區分大小寫嗎? – dhiraj 2010-04-29 14:13:42

+0

我編輯了我的答案。 – Thierry 2010-04-29 14:18:58