在Java-Hibernate (4.2版)中,我使用了一个特性来方便地将其他XML文档包含在另一个XML文档中:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"[
<!ENTITY authorizables SYSTEM "classpath://authorizables.xml">
]>
...
<any name="Authorizable" meta-type="string" id-type="long">
&authorizables; <!-- application specifc meta-value definitions for Authorizables with long-ID -->
...
</any>authorizables.xml (驻留在不同的包和jar文件中)包含具体的类
<meta-value value="Spiel" class="otherpackage.class1"/>
<meta-value value="Team" class="otherpackage.class1"/>在NHibernate 5.1 (用于C#)中,我尝试了相同的映射方法,但得到了异常
NHibernate.MappingException
+ InnerException {"DTD is prohibited in this XML document ... System.Exception {System.Xml.XmlException}从这篇(相当老的) Using Doctype in Nhibernate文章中,我了解到DOCTYPE特性(几年前)已经从NHibernate中删除了,尽管它仍然在NHibernate参考文档版本: 5.1,第8.1.6章中记录。
我也找不到记录在案的hibernate配置属性来允许DOCTYPE处理。
DOCTYPE仍然不受支持吗?(然后我必须尝试一种不同的映射方法)。
发布于 2018-04-25 23:04:04
由于我在网上找不到DOCTYPE的解决方案,所以我选择了不同的映射方法:
abstract abstract="true",并删除了<any...从我的业务模型程序集中的基类中section<union-subclass ...使用我现有的数据库表,并将<any...部分包含所有特定于业务模型的<meta-value ...定义我还必须将代码中的new“基类”替换为new“派生类”,但这是可以接受的,因为所有这些位置都在我的业务模型程序集中。
https://stackoverflow.com/questions/49877784
复制相似问题