现在做的一个SSH项目出了一个问题:
保存用户信息,
实体类字段有:姓、名、年龄
数据库user表有:用户id、姓、名、年龄,id是自增长的
struts2、Hibernate3.1、spring2.0整合后运行,控制台有打印出一条插入语句:
Hibernate: insert into mytest.dbo.users (firstname, lastname, age) values (?, ?, ?), 但是我在数据库打开user表,想看看数据有没有插入表,他会出现这样一个提示框: 
SQL执行错误。
已执行SQL语句:select id, firstname, lastname, age from users
错误源:.Net SqlClient Data Provider
错误信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应。只要tomcat启动了,打开数据库的表都会弹出提示框,断开tomcat,数据库表就能正常打开。在数据库里写SQL语句是可以插入的
我搞了很久,都不知道是什么问题。请帮忙看看那里出问题了。
现把源代码贴出来,请各位高手帮忙看看。谢谢!users.java类package com.workflow.entity;/**
 * Users entity.
 * 
 * @author MyEclipse Persistence Tools
 */public class Users implements java.io.Serializable { // Fields private Integer id;
private String firstname;
private String lastname;
private Integer age; // Constructors /** default constructor */
public Users() {
} /** full constructor */
public Users(String firstname, String lastname, Integer age) {
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
} // Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getFirstname() {
return this.firstname;
} public void setFirstname(String firstname) {
this.firstname = firstname;
} public String getLastname() {
return this.lastname;
} public void setLastname(String lastname) {
this.lastname = lastname;
} public Integer getAge() {
return this.age;
} public void setAge(Integer age) {
this.age = age;
}}users.hbm.xml<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.workflow.entity.Users" table="users" schema="dbo" catalog="mytest">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="firstname" type="java.lang.String">
            <column name="firstname" length="50" not-null="true" />
        </property>
        <property name="lastname" type="java.lang.String">
            <column name="lastname" length="50" not-null="true" />
        </property>
        <property name="age" type="java.lang.Integer">
            <column name="age" not-null="true" />
        </property>
    </class>
</hibernate-mapping>userdao/userdaoImplpackage com.workflow.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.workflow.dao.UserDao;
import com.workflow.entity.Users;public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@SuppressWarnings("unchecked")
@Override
public List<Users> findAllUsers() {
// TODO Auto-generated method stub
String hql="from Users user order by user.id desc";
return (List<Users>)this.getHibernateTemplate().find(hql);
} @Override
public Users findUserById(int id) {
// TODO Auto-generated method stub
Users user =new Users();
user=(Users) this.getHibernateTemplate().get(Users.class, id);
return user;
} @Override
public void removeUser(Users user) {
// TODO Auto-generated method stub
this.getHibernateTemplate().delete(user);
} @Override
public void saveUser(Users user) {
// TODO Auto-generated method stub
super.getHibernateTemplate().save(user);
} @Override
public void updateUser(Users user) {
// TODO Auto-generated method stub
this.getHibernateTemplate().update(user);
}}

解决方案 »

  1.   

    userBiz/userBizImplpackage com.workflow.biz.impl;import java.util.List;import com.workflow.biz.UserBiz;
    import com.workflow.dao.UserDao;
    import com.workflow.entity.Users;public class UserBizImpl implements UserBiz {

    private UserDao userDao; public UserDao getUserDao() {
    return userDao;
    } public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
    } @Override
    public void delete(Users user) {
    // TODO Auto-generated method stub
    this.userDao.removeUser(user);
    } @Override
    public List<Users> findAll() {
    // TODO Auto-generated method stub
    return this.userDao.findAllUsers();
    } @Override
    public Users findById(int id) {
    // TODO Auto-generated method stub
    return this.userDao.findUserById(id);
    } @Override
    public void save(Users user) {
    // TODO Auto-generated method stub
    this.userDao.saveUser(user);
    } @Override
    public void update(Users user) {
    // TODO Auto-generated method stub
    this.userDao.updateUser(user);
    }}actionpackage com.workflow.web.action;import com.opensymphony.xwork2.ActionSupport;
    import com.workflow.biz.UserBiz;
    import com.workflow.entity.Users;
    public class SaveUserAction extends ActionSupport {
    private Users user;
    private UserBiz userBiz;
    public Users getUser() {
    return user;
    }
    public void setUser(Users user) {
    this.user = user;
    }
    public UserBiz getUserBiz() {
    return userBiz;
    }
    public void setUserBiz(UserBiz userBiz) {
    this.userBiz = userBiz;
    }

    @Override
    public String execute() throws Exception{
    this.userBiz.save(this.user);
    return SUCCESS;
    }}hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration><session-factory>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="connection.url">jdbc:sqlserver://127.0.0.1:1433;databaseName=mytest</property>
    <property name="connection.username">sa</property>
    <property name="connection.password"></property>
    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="myeclipse.connection.profile">flow</property>
    <property name="show_sql">true</property>
    <mapping resource="com/workflow/entity/Users.hbm.xml" /></session-factory></hibernate-configuration>struts.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>
    <package name="user" extends="struts-default">
    <action name="saveUser" class="saveUserAction">
    <result name="success" type="redirect">listUser.action</result>
    <result name="input">/saveUser.jsp</result>
    </action>
    </package>
    </struts>applicationContext.xml<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean> <!-- dao -->
    <bean id="userDao" class="com.workflow.dao.impl.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean> <!-- biz/serive -->
    <bean id="userBiz" class="com.workflow.biz.impl.UserBizImpl">
    <property name="userDao" ref="userDao"></property>
    </bean> <!-- action -->
    <bean id="saveUserAction"
    class="com.workflow.web.action.SaveUserAction">
    <property name="userBiz" ref="userBiz"></property>
    </bean></beans>web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list> <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    </web-app>index.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        <h1><font color="red">Operation List</font></h1>
        <s:a href="save.jsp">Save User</s:a><br><br><br>
        <s:a href="listUser.action">List User</s:a>
      </body>
    </html>save.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>"> <title>Save User</title> <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    --> </head> <body>
    <h1>
    <font color="red">Save User</font>
    </h1>
    <s:form action="saveUser">
    <s:textfield name="user.firstname" label="%{getText('firstname')}"></s:textfield>
    <s:textfield name="user.lastname" label="%{getText('lastname')}"></s:textfield>
    <s:textfield name="user.age" label="%{getText('age')}"></s:textfield>
    <s:submit value="%{getText('submit')}"></s:submit>
    </s:form>
    </body>
    </html>
      

  2.   

    你用的是oracle数据库吧,如果是那是因为你的项目发生了异常,数据库在执行操作但还没提交,此时不能再对数据库进行操作,除非断开连接或者在数据库里手动回滚事物