使用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