//test.jsp
<%@ page import="net.sf.hibernate.*,com.cat.*" %>
<%
Session ss = HibernateUtil.currentSession();Transaction tx= ss.beginTransaction();Cat princess = new Cat();
princess.setName("Princess");
princess.setSex('F');
princess.setWeight(7.4f);ss.save(princess);
tx.commit();HibernateUtil.closeSession(); %>

解决方案 »

  1.   

    其他部分和教程上playing with Cats中的一样(直接copy的),只是把数据库改成了mssqlserver2000
      

  2.   

    //hibernate.cfg.xml
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration
        PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration>    <session-factory>        <property name="connection.datasource">java:comp/env/jdbc/cattest</property>
            <property name="show_sql">true</property>
            <property name="dialect">net.sf.hibernate.dialect.SybaseDialect</property>        <!-- Mapping files -->
            <mapping resource="Cat.hbm.xml"/>    </session-factory></hibernate-configuration>
      

  3.   

    你用的msserver
     <property name="dialect">net.sf.hibernate.dialect.SybaseDialect</property>要改成hibernate.dialect net.sf.hibernate.dialect.SQLServerDialect
      

  4.   

    //in server.xml
    <Context path="/cattest" docBase="D:\eclipse\eclipse3.0\workspace\cattest">
               <Resource name="jdbc/cattest" scope="Shareable" type="javax.sql.DataSource"/>
               <ResourceParams name="jdbc/cattest">
                   <parameter>
                       <name>factory</name>
                       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                   </parameter>               <!-- DBCP database connection settings -->
                   <parameter>
                       <name>url</name>
                       <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=cattest;SendStringParametersAsUnicode=true</value>
                   </parameter>
                   <parameter>
                       <name>driverClassName</name><value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
                   </parameter>
                   <parameter>
                       <name>username</name>
                       <value>cat</value>
                   </parameter>
                   <parameter>
                       <name>password</name>
                       <value>123456</value>
                   </parameter>        <!-- DBCP connection pooling options -->
            <parameter>
                <name>maxWait</name>
                <value>3000</value>
            </parameter>
            <parameter>
                <name>maxIdle</name>
                <value>100</value>
            </parameter>
            <parameter>
                <name>maxActive</name>
                <value>10</value>
            </parameter>
        </ResourceParams>
    </Context>
      

  5.   

    to zhxx(做个好流氓有多难)
    改成hibernate.dialect net.sf.hibernate.dialect.SQLServerDialect后,问题如下:exception javax.servlet.ServletException
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.test_jsp._jspService(test_jsp.java:74)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    root cause java.lang.NoClassDefFoundError
    org.apache.jsp.test_jsp._jspService(test_jsp.java:52)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      

  6.   

    问题已经解决,但我在看tomcat日志的时候发现了如下的信息:
    51094 [http-8080-Processor4] INFO impl.SessionFactoryImpl  - building session factory
    52386 [http-8080-Processor4] INFO impl.SessionFactoryObjectFactory  - Not binding factory to JNDI, no JNDI name configured
    Hibernate: insert into CAT (name, sex, weight, id) values (?, ?, ?, ?)SessionFactoryObjectFactory是怎么回事?干什么用的?怎么绑定?
      

  7.   

    #openldap
    hibernate.jndi.class com.sun.jndi.ldap.LdapCtxFactory
    hibernate.jndi.url ldap://localhost:389/#weblogic
    hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory
    hibernate.jndi.url iiop://localhost:900/
      

  8.   

    to  chancelin() ( ) 信誉:100 
    在tomcat下怎么绑定啊?openldap么???
      

  9.   

    还有一个问题:
    net.sf.hibernate.Session ss = com.cat.HibernateUtil.currentSession();
    net.sf.hibernate.Transaction tx= ss.beginTransaction();
    net.sf.hibernate.Query query = ss.createQuery("select cat from Cat as cat where cat.sex = :sex");
    query.setCharacter("sex", 'F');
    for (java.util.Iterator it = query.iterate(); it.hasNext();) {
        com.cat.Cat cat = (com.cat.Cat) it.next();
        out.println("Female Cat: " + cat.getName() );
    }
    tx.commit();以上是按教程上写的。问题如下:
    100905 [http-8080-Processor3] WARN util.JDBCExceptionReporter  - SQL Error: 0, SQLState: 08007
    100905 [http-8080-Processor3] ERROR util.JDBCExceptionReporter  - [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.setupImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source)
    at com.microsoft.jdbc.base.BasePreparedStatement.<init>(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
    at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:185)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:278)
    at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java:257)
    at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java:232)
    at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:65)
    at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:779)
    at net.sf.hibernate.hql.QueryTranslator.iterate(QueryTranslator.java:864)
    at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1609)
    at net.sf.hibernate.impl.QueryImpl.iterate(QueryImpl.java:27)
    at org.apache.jsp.list_jsp._jspService(list_jsp.java:57)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
    at java.lang.Thread.run(Thread.java:534)