论坛首页 Java版 Hibernate

一个表有二个多对多关系,有时得多次启动(没有做过任何更改,只是启动tomcat)才能正常使用.!!!

浏览 1406 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-11-21
现有一pojo
package com.xqs.basic.model;

import java.util.HashSet;
import java.util.Set;


/**
 *  @author  (xiaqingsong)
 */

public class Groups  implements java.io.Serializable {


    // Fields    

     /**
	 * 
	 */
	private static final long serialVersionUID = -4262121572934269223L;
	private Long id;
     private String groupname;
     private String groupinfo;
     private Long rolldate;
     private Long isenable;
     private Set actionses = new HashSet(0);
     private Set masters = new HashSet(0);

    // Constructors

    /** default constructor */
    public Groups() {
    }

    
    /** full constructor */
    public Groups(String groupname, String groupinfo, Long rolldate, Long isenable, Set actionses, Set masters) {
        this.groupname = groupname;
        this.groupinfo = groupinfo;
        this.rolldate = rolldate;
        this.isenable = isenable;
        this.actionses = actionses;
        this.masters = masters;
    }

   
    // Property accessors

    public Long getId() {
        return this.id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }

    public String getGroupname() {
        return this.groupname;
    }
    
    public void setGroupname(String groupname) {
        this.groupname = groupname;
    }

    public String getGroupinfo() {
        return this.groupinfo;
    }
    
    public void setGroupinfo(String groupinfo) {
        this.groupinfo = groupinfo;
    }

    public Long getRolldate() {
        return this.rolldate;
    }
    
    public void setRolldate(Long rolldate) {
        this.rolldate = rolldate;
    }

    public Long getIsenable() {
        return this.isenable;
    }
    
    public void setIsenable(Long isenable) {
        this.isenable = isenable;
    }

    public Set getActionses() {
        return this.actionses;
    }
    
    public void setActionses(Set actionses) {
        this.actionses = actionses;
    }

    public Set getMasters() {
        return this.masters;
    }
    
    public void setMasters(Set masters) {
        this.masters = masters;
    }

   
    public boolean equals(Object obj) {
    	if(obj == null)
    		return false;
    	if(!(obj instanceof Groups))
    		return false;
    	Groups anotherObj = (Groups) obj;
    	return anotherObj.getId().equals(this.getId()) ? true : false;    	
    }    
   
    public int hashCode() {    	
    	return id.hashCode()*17+31;
    }

}


XML
<hibernate-mapping>
    <class name="com.xqs.basic.model.Groups" table="GROUPS">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="groupname" type="java.lang.String">
            <column name="GROUPNAME" length="100" />
        </property>
        <property name="groupinfo" type="java.lang.String">
            <column name="GROUPINFO" length="100" />
        </property>
        <property name="rolldate" type="java.lang.Long">
            <column name="ROLLDATE" precision="16" scale="0" />
        </property>
        <property name="isenable" type="java.lang.Long">
            <column name="ISENABLE" precision="2" scale="0" />
        </property>
        <set name="actionses" table="ACTGROUP"  cascade="save-update" inverse="false" >
            <key>
                <column name="GROUPID" />
            </key>
            <many-to-many class="com.xqs.basic.model.Actions" column= "ACTID" />
        </set>
        <set name="masters" table="MASTERGROUP" cascade="save-update" inverse="true">
            <key>
                <column name="GROUPID" />
            </key>
            <many-to-many class="com.xqs.basic.model.Master" column="MASTERID" />
        </set>
    </class>
</hibernate-mapping>

关系图说明
GROUPs与actions是多对多关系,由GROUPS来维持关系.
GROUPs与masters是多对多关系,由masters来维持关系

出错代码:
[149156ms] [org.hibernate.util.DTDEntityResolver.http-8080-Processor25] DEBUG: located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: connection.url=jdbc:microsoft:sqlserver://bsserver:1433;SelectMethod=cursor
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: dialect=org.hibernate.dialect.SQLServerDialect
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: connection.username=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: connection.password=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: default_schema=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: default_catalog=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: show_sql=true
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] DEBUG: null<-org.dom4j.tree.DefaultAttribute@1713b42 [Attribute: name resource value "com/xqs/basic/model/Groups.hbm.xml"]
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: connection.url=jdbc:microsoft:sqlserver://bsserver:1433;SelectMethod=cursor
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor25] INFO : Reading mappings from resource: com/xqs/basic/model/Groups.hbm.xml
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: dialect=org.hibernate.dialect.SQLServerDialect
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: connection.username=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: connection.password=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: default_schema=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: default_catalog=sde
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: show_sql=true
[149328ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] DEBUG: null<-org.dom4j.tree.DefaultAttribute@e99d0f [Attribute: name resource value "com/xqs/basic/model/Groups.hbm.xml"]
[149344ms] [org.hibernate.cfg.Configuration.http-8080-Processor22] INFO : Reading mappings from resource: com/xqs/basic/model/Groups.hbm.xml
[149360ms] [org.hibernate.util.DTDEntityResolver.http-8080-Processor25] DEBUG: trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd]
[149360ms] [org.hibernate.util.DTDEntityResolver.http-8080-Processor25] DEBUG: recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
%%%% Error Creating SessionFactory %%%%
[149406ms] [org.hibernate.util.DTDEntityResolver.http-8080-Processor25] DEBUG: located [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd] in classpath
org.hibernate.MappingException: Could not read mappings from resource: com/xqs/basic/model/Groups.hbm.xml
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
	at com.xqs.wjd.hb.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:64)
	at com.xqs.wjd.hb.HibernateSessionFactory.getCurrentSession(HibernateSessionFactory.java:48)
	at com.xqs.sys.SqlService.findByStr(SqlService.java:379)
	at com.xqs.wjd.dao.impl.MasterDAOImpl.findByProperty(MasterDAOImpl.java:97)
	at com.xqs.wjd.service.impl.MasterSeviceImpl.findByProperty(MasterSeviceImpl.java:48)
	at com.xqs.wjd.web.service.security.SecurityService.hasPermission(SecurityService.java:38)
	at com.xqs.wjd.web.service.action.security.LoginAction.execute(LoginAction.java:27)
	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:585)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:364)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:225)
	at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at com.xqs.sys.EncodingFilter.doFilter(EncodingFilter.java:66)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: org.hibernate.MappingException: Could not parse mapping document in input stream
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:431)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
	... 43 more
Caused by: org.dom4j.DocumentException: FWK005 parse may not be called while parsing. Nested exception: FWK005 parse may not be called while parsing.
	at org.dom4j.io.SAXReader.read(SAXReader.java:484)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:422)
	... 44 more
[149516ms] [com.xqs.sys.SqlService.http-8080-Processor22] ERROR: 无法取得连接!!请检查网络是否通畅!!!
[149594ms] [com.opensymphony.webwork.dispatcher.ServletRedirectResult.http-8080-Processor22] DEBUG: Redirecting to finalLocation /wjd/security/login.jsp?error=1
[149610ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: JspEngine --> /security/login.jsp
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	     ServletPath: /security/login.jsp
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	        PathInfo: null
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	        RealPath: D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\wjd\security\login.jsp
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	      RequestURI: /wjd/security/login.jsp
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	     QueryString: error=1
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 	  Request Params: 
[149625ms] [org.apache.jasper.servlet.JspServlet.http-8080-Processor23] DEBUG: 		 error = 1
%%%% Error Creating SessionFactory %%%%
java.lang.NullPointerException
	at org.hibernate.cfg.HbmBinder.getExtendsNeeded(HbmBinder.java:2926)
	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:107)
	at org.hibernate.cfg.Configuration.add(Configuration.java:386)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
	at com.xqs.wjd.hb.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:64)
	at com.xqs.wjd.hb.HibernateSessionFactory.getCurrentSession(HibernateSessionFactory.java:48)
	at com.xqs.sys.SqlService.findByStr(SqlService.java:379)
	at com.xqs.wjd.dao.impl.MasterDAOImpl.findByProperty(MasterDAOImpl.java:97)
	at com.xqs.wjd.service.impl.MasterSeviceImpl.findByProperty(MasterSeviceImpl.java:48)
	at com.xqs.wjd.web.service.security.SecurityService.hasPermission(SecurityService.java:38)
	at com.xqs.wjd.web.service.action.security.LoginAction.execute(LoginAction.java:27)
	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:585)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:364)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:225)
	at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at com.xqs.sys.EncodingFilter.doFilter(EncodingFilter.java:66)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
[150156ms] [com.xqs.sys.SqlService.http-8080-Processor25] ERROR: 无法取得连接!!请检查网络是否通畅!!!
[150156ms] [com.opensymphony.webwork.dispatcher.ServletRedirectResult.http-8080-Processor25] DEBUG: Redirecting to finalLocation /wjd/security/login.jsp?error=1
[165922ms] [org.apache.catalina.core.ApplicationDispatcher.http-8080-Processor22] DEBUG: servletPath=/error.jsp, pathInfo=null, queryString=null, name=null
[165922ms] [org.apache.catalina.core.ApplicationDispatcher.http-8080-Processor22] DEBUG:  Path Based Forward
  • 26aadcba-86f9-4548-88fa-0e8d67429776-thumb
  • 大小: 1.1 MB
   
最后更新时间:2006-11-22
你用的是hibernate2吧?但是你的hbm.xml里<property>格式是hibernate3的格式,所以会发生冲突,你在生成hbm.xml的时候要注意一下hibernate的版本问题.很有可能会因为版本问题而出错的!
   
0 请登录后投票
最后更新时间:2006-12-01
回楼上滴,我用的是hb3.1 
从你的回复看,我的配置及代码就是没有问题罗???
我始终怀疑是因为这groups这个表多了二个多对多的关系才造成这种现象了。。但无法验证。
   
0 请登录后投票
最后更新时间:2006-12-15
我也遇到相似的问题,还没解决呢,楼主是怎么解决的一张表对应多表的?
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐