hibernate - 使用 XML 文件的 Hibernate 继承映射
问题描述
我正在使用映射 XML 来创建数据库。我有 2 类Intervention
和Preventive
。Preventive
包含属性PeriodePreventive
和inherits
from Intervention
。
当我运行项目时出现此错误
log4j:WARN No appenders could be found for logger
(org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Initial SessionFactory creation failed.org.hibernate.MappingException: Could
not read mappings from resource: dao/Intervention.hbm.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
at Util.HibernateUtil.<clinit>(HibernateUtil.java:17)
at dao.Service.addPARTICIPANT(Service.java:13)
at Test.main(Test.java:12)
Caused by: org.hibernate.MappingException: Could not read mappings from
resource: dao/Intervention.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:484)
at
org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1443)
at
org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1411)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1392)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1368)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1288)
at Util.HibernateUtil.<clinit>(HibernateUtil.java:13)
... 2 more
Caused by: org.hibernate.MappingException: invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:424)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:481)
... 8 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 34; columnNumber: 10;
Le contenu du type d'élément "class" doit correspondre à "
(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*,resultset*,(query|sql-query)*)".
at
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
atcom.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElemen
t(Unk
nown Source)
atcom.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(Unkn
own Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.
scanEndElement (Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDriver.next(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.
next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.
scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.
parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.
parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.
parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:421)
... 9 more
<class name="dao.Intervention" table="Intervention"
discriminator-value="TypeIntervention">
<id name="IdIntervention" column="IdIntervention">
<generator class="native"></generator>
</id>
<property name="DateIntervention" column="DateIntervention"></property>
<property name="ActionIntervention"
column="ActionIntervention"></property>
<joined-subclass name="dao.Preventive" table="Preventive">
<key column="IdIntervention"/>
<property name="PeriodePreventive"></property>
</joined-subclass>
<many-to-one name="Anomalie" class="dao.Anomalie"
column="IdAnomalie" />
<many-to-one name="User" class="dao.Utilisateur"
column="IdUser" />
</class> </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
</hibernate-mapping>
解决方案
我刚搬家
<joined-subclass>....</joined-subclass>
后
<many-to-one>....</many-to-one>
在文件末尾
推荐阅读
- docker - Docker-compose 卷与 /app 文件夹共享问题
- mysql - 在mysql中更新具有NULL值的double类型列
- amazon-web-services - Google Cloud 上的“Vue+S3+Lambda”架构
- .net-core - RabbitMQ SSL 配置:DotNet 客户端
- regex - MongoDB:匹配字符串字段中的多个值
- c# - 加密存储不可用 | AWSSDK C
- javascript - 提交表单后清空 Material-UI 文本字段
- php - 当 unix 时间值过去时返回一个案例(过去)
- c# - “当前查询不支持排序。” 排序列表成员 API 时出错
- xml - 从 Nextcloud 加载 XSLT