java - Hibernate映射多对一单向通过xml,只有一个方向
问题描述
我正在学习如何在休眠中使用 xml 进行映射。
我有表 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>
表“产品”:
<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>
当我尝试使用此代码获取数据时:
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 不会在结果中返回带有产品的数据。它不会自动获取数据。这是错误:
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
这是我的偏好链接:https ://docs.jboss.org/hibernate/core/3.3/reference/en/html/associations.html (搜索 7.3.2。多对一)。我不知道为什么。我想要这样的东西:
IndexProduct:{
id:1,
product:{
id:10,
name:"car",
}
}
解决方案
推荐阅读
- jquery - 在 Laravel 中第三次初始化 DataTable 会导致列宽问题
- html - 带有 css 的烧瓶似乎无法正常工作
- javascript - 有没有办法以编程方式确定输入日期字段是否不完整?
- android - Andronix-Android-Termux-arm64-kivy-debian10
- nanoframework - 如何读取从 PC 发送到 COM 的行数据
- python - mypy:找到模块但没有类型提示或库存根(不是第 3 方库)
- c++ - 如何在 Windows 上为 openCV 编写 Makefile?
- c++ - 初始化时指定数组长度会影响编译时间吗?
- sql - 使用 SQL 保存
- arrays - 无法在 C 中显示我的数组的所有元素?