用《开发者突击》里面的初步搭建SSH2的代码,连接sqlserver2005,出现下面提示:
Hibernate: select user0_.ID as ID, user0_.username as username0_, user0_.password as password0_, user0_.email as email0_ from user user0_ where user0_.username=?
WARN - SQL Error: 156, SQLState: S0001
ERROR - 关键字 'user' 附近有语法错误。
2010-12-28 22:22:11 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'user' 附近有语法错误。
数据库中我建了表 user,属性有id username password email。
applicationContext 代码如下:
[code="xml"]
<!-- 配置数据源 -->
class="org.apache.commons.dbcp.BasicDataSource">
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
value="jdbc:sqlserver://localhost:1433;databaseName=DeviceManagement;">
<!-- 配置Hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/demo/hibernate/beans/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- 配置事务 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 定义DAO -->
<bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 定义DAO代理 -->
<bean id="UserDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- 定义Struts配置 -->
<bean name="loginAction"
class="com.demo.struts2.actions.LoginAction">
<property name="userDAO">
<ref local="userDAO" />
</property>
</bean>
<bean name="logoutAction"
class="com.demo.struts2.actions.LogoutAction">
<property name="userDAO">
<ref local="userDAO" />
</property>
</bean>
<bean name="registerAction"
class="com.demo.struts2.actions.RegisterAction">
<property name="userDAO">
<ref local="userDAO" />
</property>
</bean>
<!-- 配置拦截器 -->
<bean name="logger" class="com.demo.spring.aop.LoggingInterceptor" />
<!-- 配置拦截器代理 -->
<bean name="loggingAutoProxy"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>/login</value>
<value>/register</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>logger</value>
</list>
</property>
</bean>
[/code]
[size=x-large]提示错误行在UserDao里面,
[/size]UserDao
[code="java"]
package com.demo.hibernate.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.demo.hibernate.beans.User;
public class UserDAO extends HibernateDaoSupport implements IUserDAO {
// 验证用户名和密码
public boolean isValid(final String username, final String password) {
System.out.println("UserDao检验是否有效");
System.err.println("username:"+username+",password:"+password);
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
/////////////////////////////////////这里报错///////////////////////////////
List result = session.createCriteria(User.class).add(
Restrictions.eq("username", username)).add(
Restrictions.eq("password", password)).list();
return result;
}
});
if (list.size() > 0) {
return true;
} else {
return false;
}
}
// 判断某个用户是否存在,只需用用户名查询就可以
public boolean isExist(final String username) {
System.err.println("UserDao进行查询");
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
List result = session.createCriteria(User.class).add(
Restrictions.eq("username", username)).list();
return result;
}
});
if (list.size() > 0) {
return true;
} else {
return false;
}
}
//插入新的用户对象到数据库
public void insertUser(User user) {
System.err.println("UserDao插入数据");
getHibernateTemplate().saveOrUpdate(user);
}
//从数据库中取得用户对象
public User getUser(String userid) {
System.err.println("UserDao取得对象");
return (User) getHibernateTemplate().get(User.class,
new Integer(userid));
}
//取得用户所有详细信息
public List getUsers() {
System.err.println("UserDao取得数据");
return getHibernateTemplate().find("from User");
}
//删除某个用户的所有信息
public void deleteUser(String userid) {
System.err.println("UserDao删除某个用户的所有信息");
Object p = getHibernateTemplate().load(User.class, new Integer(userid));
getHibernateTemplate().delete(p);
}
}
[/code]
请问这是为什么呢?