HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.hibernate.TransactionException: Transaction not successfully started
org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:183)
com.dao.TeacherDao.getTeacher(TeacherDao.java:35)
com.action.TeacherAction.getTeacher(TeacherAction.java:101)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

解决方案 »

  1.   

    debug一下就知道原因了:
    com.dao.TeacherDao.getTeacher(TeacherDao.java:35)
    看看这一行附近。
      

  2.   

    com.dao.TeacherDao.getTeacher(TeacherDao.java:35)
    在这里出错了,
    没有成功的开启事务,导致 dao层里面的sql语句没有执行成功
      

  3.   


    那要怎么改呢?我只有添加了position字段后,才会出现这个问题,没有这个字段就不报错
    这里的代码是:
    package com.dao;import java.util.ArrayList;
    import java.util.List;import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.Order;import com.model.HibernateSessionFactory;
    import com.model.Teacher;public class TeacherDao {
    public static Teacher getTeacher()
    {
    Session session = HibernateSessionFactory.getSession();
    List<Teacher> list = new ArrayList<Teacher>();
    try {
    session.beginTransaction();
    Criteria criteria = session.createCriteria(Teacher.class);
    criteria.addOrder(Order.asc("id"));
    list = (List<Teacher>) criteria.list();
    session.getTransaction().commit();
    if(list.size()>0)
    return list.get(0);
    else {
    Teacher teacher=new Teacher();
    session.save(teacher);
    session.clear();
    teacher=(Teacher)session.get(Teacher.class, 1);

    return teacher;
    }
    } catch (Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace();
    return null;
    } finally {
    session.close();
    }
    }
    static public void InsertTeacher(Teacher teacher) {// 添加教师
    Session session = HibernateSessionFactory.getSession();
    try {
    session.beginTransaction();

    session.update(teacher);
    session.getTransaction().commit(); } catch (Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace(); } finally {
    session.close();
    }
    }
      

  4.   

    show create table ... 贴出看一下。
      

  5.   

    teacher表
    teacher.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">
    <hibernate-mapping>
    <!-- 映射表teacher -->
        <class name="com.model.Teacher" table="teacher" catalog="se">
         <!--映射id属性 -->
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
            <!-- 映射name属性 -->
            <property name="name" type="java.lang.String">
                <column name="name" length="45" />
            </property>
            <!-- 映射sex属性 -->
            <property name="sex" type="java.lang.String">
                <column name="sex" length="45" />
            </property>
             <!-- 映射degree属性 -->
            <property name="degree" type="java.lang.String">
                <column name="degree" length="45" />
            </property>
             <!-- 映射position属性 -->
            <property name="position" type="java.lang.String">
                <column name="position" length="45" />
            </property>
             <!-- 映射edubackground属性 -->
            <property name="eduBackground" type="java.lang.String">
                <column name="eduBackground" length="45" />
            </property>
             <!-- 映射college属性 -->
            <property name="college" type="java.lang.String">
                <column name="college" length="45" />
            </property>
             <!-- 映射address属性 -->
            <property name="address" type="java.lang.String">
                <column name="address" length="45" />
            </property>
             <!-- 映射direction属性 -->
            <property name="direction" type="java.lang.String">
                <column name="direction" length="45" />
            </property>
             <!-- 映射intro属性 -->
            <property name="intro" type="java.lang.String">
                <column name="intro" length="1000" />
            </property>
             <!-- 映射achievement属性 -->
            <property name="achievement" type="java.lang.String">
                <column name="achievement" length="2000" />
            </property>
             <!-- 映射photo属性 -->
            <property name="photo" type="java.lang.String">
                <column name="photo" length="100" />
            </property>
        </class>
    </hibernate-mapping>