您的位置:程序门 -> java -> j2se / 基础类



急!!!关于hibernate+sqlserver


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


急!!!关于hibernate+sqlserver[已结贴,结贴人:rapelwill]
发表于:2007-12-05 03:54:57 楼主

我的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="connection.driver_class">
                        com.microsoft.jdbc.sqlserver.sqlserverdriver
              </property>
              <property   name="connection.url">
                        jdbc:microsoft:sqlserver://localhost:1433;databasename=humanresources
              </property>
              <property   name="dialect">
                        net.sf.hibernate.dialect.sqlserverdialect
              </property>
              <property   name="connection.username">
                          sa
              </property>
              <property   name="connection.password">
                          password
              </property>
              <property   name="show_sql">
                          true
              </property>

              <mapping   resource="com/iss/lax/mapping/sourceemp.hbm.xml"   />
              <mapping   resource="com/iss/lax/mapping/sourcedep.hbm.xml"   />
       
        </session-factory>

</hibernate-configuration>

mssqlserver.jar;msutil.jar;msbase.jar   三个包,我也加到了classpath里.结果运行时,报如下错:

%%%%   error   creating   sessionfactory   %%%%
org.hibernate.hibernateexception:   dialect   class   not   found:   net.sf.hibernate.dialect.sqlserverdialect
at   org.hibernate.dialect.dialectfactory.builddialect(dialectfactory.java:81)
at   org.hibernate.dialect.dialectfactory.builddialect(dialectfactory.java:42)
at   org.hibernate.cfg.settingsfactory.determinedialect(settingsfactory.java:378)
at   org.hibernate.cfg.settingsfactory.buildsettings(settingsfactory.java:110)
at   org.hibernate.cfg.configuration.buildsettings(configuration.java:1881)
at   org.hibernate.cfg.configuration.buildsessionfactory(configuration.java:1174)
at   com.iss.lax.hibernate0831.hibernatesessionfactory.currentsession(hibernatesessionfactory.java:64)
at   com.iss.lax.db.dbfunction.loginfindout(dbfunction.java:31)
at   com.iss.lax.action.myaction.login(myaction.java:55)
at   sun.reflect.nativemethodaccessorimpl.invoke0(native   method)
at   sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)
at   sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25)
at   java.lang.reflect.method.invoke(method.java:597)
at   org.apache.struts.actions.dispatchaction.dispatchmethod(dispatchaction.java:274)
at   org.apache.struts.actions.dispatchaction.EXECute(dispatchaction.java:194)
at   org.apache.struts.action.requestprocessor.processactionperform(requestprocessor.java:419)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:224)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1194)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:432)
at   javax.servlet.http.httpservlet.service(httpservlet.java:710)
at   javax.servlet.http.httpservlet.service(httpservlet.java:803)
at   org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:269)
at   org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:188)
at   com.iss.lax.filter.urlfilter.dofilter(urlfilter.java:43)
at   org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:215)
at   org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:188)
at   org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:210)
at   org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:174)
at   org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)
at   org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:117)
at   org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:108)
at   org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:151)
at   org.apache.coyote.http11.http11processor.process(http11processor.java:870)
at   org.apache.coyote.http11.http11baseprotocol$http11connectionhandler.processconnection(http11baseprotocol.java:665)
at   org.apache.tomcat.util.net.pooltcpendpoint.processsocket(pooltcpendpoint.java:528)
at   org.apache.tomcat.util.net.leaderfollowerworkerthread.runit(leaderfollowerworkerthread.java:81)
at   org.apache.tomcat.util.threads.threadpool$controlrunnable.run(threadpool.java:685)
at   java.lang.thread.run(thread.java:619)

请大虾们告诉小弟到底错哪了?!急啊!!!!小弟搞了都快一通宵,问题还是没解决!!
发表于:2007-12-05 03:59:141楼 得分:0
我知道是报方言的问题,但就是不知道应该如何修改啊~~~
发表于:2007-12-05 09:10:042楼 得分:9
net.sf.hibernate.dialect.sqlserverdialect  
===>
org.hibernate.dialect.sqlserverdialect  
发表于:2007-12-05 17:06:583楼 得分:0
那个问题解决了,可是现在又报了个session的错误!!

%%%%   error   creating   sessionfactory   %%%%
org.hibernate.mappingexception:   could   not   instantiate   id   generator
at   org.hibernate.id.identifiergeneratorfactory.create(identifiergeneratorfactory.java:97)
at   org.hibernate.mapping.simplevalue.createidentifiergenerator(simplevalue.java:152)
at   org.hibernate.impl.sessionfactoryimpl. <init> (sessionfactoryimpl.java:182)
at   org.hibernate.cfg.configuration.buildsessionfactory(configuration.java:1176)
at   com.iss.lax.hibernate0831.hibernatesessionfactory.currentsession(hibernatesessionfactory.java:64)
at   com.iss.lax.db.dbfunction.loginfindout(dbfunction.java:31)
at   com.iss.lax.action.myaction.login(myaction.java:55)
at   sun.reflect.nativemethodaccessorimpl.invoke0(native   method)
at   sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)
at   sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25)
at   java.lang.reflect.method.invoke(method.java:597)
at   org.apache.struts.actions.dispatchaction.dispatchmethod(dispatchaction.java:274)
at   org.apache.struts.actions.dispatchaction.EXECute(dispatchaction.java:194)
at   org.apache.struts.action.requestprocessor.processactionperform(requestprocessor.java:419)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:224)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1194)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:432)
at   javax.servlet.http.httpservlet.service(httpservlet.java:710)
at   javax.servlet.http.httpservlet.service(httpservlet.java:803)
at   org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:269)
at   org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:188)
at   com.iss.lax.filter.urlfilter.dofilter(urlfilter.java:43)
at   org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:215)
at   org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:188)
at   org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:210)
at   org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:174)
at   org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)
at   org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:117)
at   org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:108)
at   org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:151)
at   org.apache.coyote.http11.http11processor.process(http11processor.java:870)
at   org.apache.coyote.http11.http11baseprotocol$http11connectionhandler.processconnection(http11baseprotocol.java:665)
at   org.apache.tomcat.util.net.pooltcpendpoint.processsocket(pooltcpendpoint.java:528)
at   org.apache.tomcat.util.net.leaderfollowerworkerthread.runit(leaderfollowerworkerthread.java:81)
at   org.apache.tomcat.util.threads.threadpool$controlrunnable.run(threadpool.java:685)
at   java.lang.thread.run(thread.java:619)
caused   by:   org.hibernate.mappingexception:   dialect   does   not   support   sequences
at   org.hibernate.dialect.dialect.getsequencenextvalstring(dialect.java:531)
at   org.hibernate.id.sequencegenerator.configure(sequencegenerator.java:65)
at   org.hibernate.id.identifiergeneratorfactory.create(identifiergeneratorfactory.java:93)
...   35   more


我的类   hibernatesessionfactory中的方法:

  public   static   session   currentsession()   throws   hibernateexception   {

                session   session   =   (session)   threadlocal.get();
               
                if   (session   ==   null)   {
                          if   (sessionfactory   ==   null)   {
                                  try   {
                                  cfg.configure(config_file_location);
                                          sessionfactory   =   cfg.buildsessionfactory();
                                  }
                                  catch   (exception   e)   {
                                          system.err.println("%%%%   error   creating   sessionfactory   %%%%");
                                          e.printstacktrace();
                                  }
                          }
                session   =   sessionfactory.opensession();
                threadlocal.set(session);
                  }

                return   session;

类   dbfunction   中的   在数据库中,找出符合从登陆窗口输入的用户名和编号,并计算是否等于1     的方法如下:

  public   int   loginfindout   (string   empname,int   empnumber)   {
session   session1   =   hibernatesessionfactory.currentsession();
transaction   tx     =   session1.begintransaction();
query   query1   =   session1.createquery(hql1);
query1.setstring("empname",   empname);
query1.setinteger("empnumber",empnumber);
integer   i   =   (integer)   query1.uniqueresult();
tx.commit();
hibernatesessionfactory.closesession();
return   i;
}

类   myaction   中的登陆方法如下:
public   actionforward   login(actionmapping   mapping,   actionform   form,
httpservletrequest   request,   httpservletresponse   response)   {
myform   myform   =   (myform)   form;
string   empname   =   myform.getempname();
int   empnumber   =   myform.getempnumber();
dbfunction   db   =   new   dbfunction   ();
string   forward   =   null;

if   (db.loginfindout(empname   ,empnumber)==1   )     {
forward   =   "loginsuccessful";
} else   {
forward   =   "loginfailed";
}
request.getsession().setattribute("empname",   empname);

return   mapping.findforward(forward);
}

请前辈们   指点   小弟一下~~     无胜感激!!!
发表于:2007-12-05 21:08:414楼 得分:0
谁便谁   来说两句也好啊~~     小弟急啊~~~
发表于:2007-12-05 21:53:105楼 得分:2
在你的hibernate.cfg.xml中加入下面的的语句试试:
java code
<property name="dialect">org.hibernate.dialect.sqlserverdialect</property> 产生这个错误的原因,可能你加入了自动键表的指令如: <property name="hbm2ddl.auto">create</property> 或者是时候了hbm2java这样的自动生成工具时 ,如果不指令方言就会报错
发表于:2007-12-06 11:23:496楼 得分:9
caused       by:       org.hibernate.mappingexception:       dialect       does       not       support       sequences  
写得这么清楚,   你就不会看两眼。
方言不支持序列。
序列是oracle才有的东西,   你的sqlservice哪有这东西,   去改映射表的主键生成方式


快速检索

最新资讯
热门点击