2010-12-14 15 views
0

私は、Java Listを使用して休止状態で多対多の例を作ろうとしています。私のコードは次のとおりですが、私はいくつかのエラーを受け取ります。Javaリストを使用したHibernateの多対多双方向マッピング

public class Student implements java.io.Serializable 
{ 
    private long studentId; 
    private String studentName; 
    private List<Course> courses = new LinkedList<Course>(); 
     //other getters and setters 

} 

コース:誰かが私はこの問題を解決するのに役立つことができれば、それはA学生は多くの学生

     Student ---->STUDENT_COURSE<-----Course 

学生クラスによって撮影することができ、多くのコース コースを取ることができます偉大な

だろうクラス:

public class Course implements java.io.Serializable { 

    private long courseId; 
    private String courseName; 
    private List <Student> Stu = new LinkedList <Student>(); 
     //other getters and setters 
} 

コースマッピングファイル:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Dec 14, 2010 7:14:32 AM by Hibernate Tools 3.4.0.Beta1 --> 
<hibernate-mapping> 
    <class name="com.BiddingSystem.domain.Course" table="COURSE"> 
     <id name="courseId" type="long"> 
      <column name="COURSEID" /> 
      <generator class="native" /> 
     </id> 
     <property name="courseName" type="java.lang.String"> 
      <column name="COURSENAME" /> 
     </property> 
     <list name="Stu" table="STUDENT_COURSE"> 
      <key> 
       <column name="COURSEID" /> 
      </key> 
      <many-to-many column="STUDENTID" class="com.BiddingSystem.domain.Student" /> 
     </list> 
    </class> 
</hibernate-mapping> 

学生マッピングファイル:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Dec 14, 2010 7:14:32 AM by Hibernate Tools 3.4.0.Beta1 --> 
<hibernate-mapping> 
    <class name="com.BiddingSystem.domain.Student" table="STUDENT"> 
     <id name="studentId" type="long"> 
      <column name="STUDENTID" /> 
      <generator class="native" /> 
     </id> 
     <property name="studentName" type="java.lang.String"> 
      <column name="STUDENTNAME" /> 
     </property> 
     <list name="courses" table="STUDENT_COURSE"> 
      <key> 
       <column name="STUDENTID" /> 
      </key> 
      <many-to-many column="COURSEID" class="com.BiddingSystem.domain.Course" /> 
     </list> 
    </class> 
</hibernate-mapping> 

エラー:

Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/BiddingSystem/domain/Student.hbm.xml 
[WARN] /biddingsystem/greet 
java.lang.ExceptionInInitializerError 
    at com.BiddingSystem.server.HibernateUtil.<clinit>(HibernateUtil.java:16) 
    at com.BiddingSystem.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:33) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at java.lang.Class.newInstance0(Class.java:355) 
    at java.lang.Class.newInstance(Class.java:308) 
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:324) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/BiddingSystem/domain/Student.hbm.xml 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:671) 
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679) 
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1520) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1506) 
    at com.BiddingSystem.server.HibernateUtil.<clinit>(HibernateUtil.java:12) 
    ... 26 more 
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping 
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:604) 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:668) 
    ... 33 more 
Caused by: org.xml.sax.SAXParseException: The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)". 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.dom4j.io.SAXReader.read(SAXReader.java:465) 
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:601) 
    ... 34 more 
[WARN] Nested in java.lang.ExceptionInInitializerError: 
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/BiddingSystem/domain/Student.hbm.xml 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:671) 
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679) 
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1520) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1506) 
    at com.BiddingSystem.server.HibernateUtil.<clinit>(HibernateUtil.java:12) 
    at com.BiddingSystem.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:33) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at java.lang.Class.newInstance0(Class.java:355) 
    at java.lang.Class.newInstance(Class.java:308) 
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:324) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping 
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:604) 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:668) 
    ... 33 more 
Caused by: org.xml.sax.SAXParseException: The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)". 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.dom4j.io.SAXReader.read(SAXReader.java:465) 
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:601) 

答えて

3

あなたはリストではなく、セットを使用する必要があります。リストをマップするには、各メンバーが存在するリスト内のインデックス(anまたはelement)を指定する追加の列が必要です。

私の経験上、Hibernateのリストマッピングのサポートを避けるのが最善です。

+0

問題は、私がJavaリストを必要とするウィジェットを使用していることです。私はこのリストを働かせる必要がある!! – Noor

+0

誰かが1対1、多対多、多対多のために休止状態でリストを動作させるのを助けることができます – Noor

+0

例えば、リストをArrayListにコピーするだけで簡単にリストに変換することができます。リストに入れる順序と、その順序がデータベースで指定されているのか、並べ替えの結果であるのかを考えなければなりません。 – araqnid

0

hereをご覧ください。それはおそらく、あなたのprobemを解決します。

+0

ええと、私はこの実装を使っていましたが、エラーがたくさんありました。上記の実装は同じ実装です – Noor

+0

リストブロックを解析できないようです。 の代わりに、を試すことができますか? –

+0

残念ながら、列タグを変更しても失敗します。適切なマッピングファイルを生成できるツールはありますか?これらのマッピングファイルを作成する – Noor

関連する問題