尝试使用 HQL 从表中获取记录时出现错误
引起:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你的SQL语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '.userinfo userinfo0_ where userinfo0_.login_id='muskan' 和 userinfo0_.pwd='musk' 附近使用正确的语法
完整的错误跟踪:
java:196) 在 org.hibernate.impl.SessionImpl.list(SessionImpl.java:1258) 在 org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 在 com.ovs.domain.UserDAO.validateUser(UserDAO .java:16) at com.ovs.action.LoginTest.main(LoginTest.java:17) 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 在 java.lang.reflect.Constructor。
表结构:
CREATE TABLE `userinfo` (
`login_id` varchar(10) NOT NULL,
`pwd` varchar(15) NOT NULL,
`role` varchar(15) NOT NULL,
`lastlogon` bigint(20) NOT NULL,
PRIMARY KEY (`login_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
休眠设置:
<name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
Java代码:
String query="from Userinfo userinfo where userinfo.loginId='"+userinfo.getLoginId()+"' and userinfo.pwd='"+ userinfo.getPwd()+
"' and userinfo.role='"+userinfo.getRole()+"'";
Query validateUserQuery= getsession().createQuery(query);
System.out.print(validateUserQuery.getQueryString());
List<Userinfo> result = validateUserQuery.list();