1

I'm learning how to mapping with xml in hibernate.
I have table IndexProduct, which has many row point to a product.

Table "IndexProduct":

<hibernate-mapping>
    <class name="path.to.model.IndexProduct" table="IndexProduct">    
        <meta attribute = "class-description">
            This class contains the sesion detail. 
        </meta>        
        <id name="id" type="java.lang.Long" column="id">
            <generator class="native"/>
        </id>        

        <join table="Product" optional="true">
            <key column="id" unique="true"/>
            <many-to-one name="Product" class="path.to.model.Product" 
            column="idProduct" not-null="true" />  
        </join>

        <property name="year" type="java.lang.Integer">
            <column name="year"/>
        </property>    
        <property name="Index" type="java.lang.Float">
            <column name="Index"/>
        </property>       

    </class>
</hibernate-mapping>

Table "Product":

<hibernate-mapping>
    <class name="path.to.model.Product" table="Product">    
        <meta attribute = "class-description">
            This class contains the sesion detail. 
        </meta>        
        <id name="id" type="java.lang.Long" column="id">
            <generator class="native"/>
        </id>      
        <property name="nameProduct" type="java.lang.String">
            <column name="nameProduct"/>
        </property>            
    </class>
</hibernate-mapping>

When I tried to get data with this code:

    Session ss = factory.openSession();
    try {
        Transaction tx = ss.beginTransaction();

        Object result = ss.get(IndexProduct.class, id);

        tx.commit();
        return new JSONObject().put("data", result);
    } catch (Exception ex) {           
         return new JSONObject().put("data", ex.getMessage());
    } finally {
        if (ss!= null) {
            ss.close();
        }
    }

Hibernate won't return data with product in result. It won't auto get data. This's the Error:

caused by: org.xml.sax.SAXParseException; lineNumber: 32; columnNumber: 13; The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1994)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879)
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:2967)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:505)
... 29 more

This is my preference link: https://docs.jboss.org/hibernate/core/3.3/reference/en/html/associations.html (search 7.3.2. Many-to-one). I don't know why. I want something like this:

IndexProduct:{
  id:1,
  product:{
    id:10,
    name:"car",
  }

}
PandaRasta
  • 321
  • 4
  • 15

0 Answers0