使用hibernate和spring social,Hibernate在HQL中遇到'@'字符困難
我想通過電子郵件地址查詢數據庫。 當我做到這一點查詢:
公共賬號findAccountByUsername(字符串username){
Session session = sessionFactory.getCurrentSession(); String selectQuery = "FROM Account as account WHERE account.username = "+username; Query query = session.createQuery(selectQuery); @SuppressWarnings("unchecked") List<Account> results = query.list(); if (!results.iterator().hasNext()) return null; return results.iterator().next(); }
我得到這個例外
2013年1月22日14:37:13090 [DEBUG] [HibernateTransactionManager,doBegin(),569] - 將Hibernate事務公開爲JDBC事務[[email protected]] 2013-01-22 14:3 7:13,352 [DEBUG] [QueryTranslatorImpl,parse(),272] - parse() - HQL:FROM masterPackage.model.orm.Account as account WHERE account.username = [email protected] 2013-01-22 14: [回調] [HibernateTransactionManager,doRollback(),672] - 回滾Session上的Hibernate事務[HibernateTransactionManager,doRollback(),672] [email protected]] 2013年1月22日14:37:13385 [DEBUG] [JDBCTransaction,回滾(),186] - 回滾
.......
2013-01-22 14:37:18,818 [WARN] [ProviderSignInController,oauth2Callback(),177] - 處理OAuth2回調時的異常(意外的字符:'@'[FROM masterpackage.model.orm.Account as account WHERE account.username = [email protected]])。重定向到/登錄
有沒有辦法解決這個問題?
總是有一種方法可以將@字符保存爲電子郵件地址中的其他字符,但我問是否有更好的解決方案。
謝謝。這工作。我對Hibernate有點新鮮。不知道你不能做這樣的事情。 – Gleeb