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",
}
}