首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate映射文件:是否仍不支持DOCTYPE?

NHibernate映射文件:是否仍不支持DOCTYPE?
EN

Stack Overflow用户
提问于 2018-04-17 20:11:04
回答 1查看 85关注 0票数 1

在Java-Hibernate (4.2版)中,我使用了一个特性来方便地将其他XML文档包含在另一个XML文档中:

代码语言:javascript
复制
<!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文件中)包含具体的类

代码语言:javascript
复制
<meta-value value="Spiel" class="otherpackage.class1"/>
<meta-value value="Team" class="otherpackage.class1"/>

在NHibernate 5.1 (用于C#)中,我尝试了相同的映射方法,但得到了异常

代码语言:javascript
复制
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仍然不受支持吗?(然后我必须尝试一种不同的映射方法)。

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 23:04:04

由于我在网上找不到DOCTYPE的解决方案,所以我选择了不同的映射方法:

  • 使我的公共程序集的类成为一个基类,这个类也在映射文件中abstract abstract="true",并删除了<any...从我的业务模型程序集中的基类中section
  • derived一个类
  • 将后者映射为<union-subclass ...使用我现有的数据库表,并将<any...部分包含所有特定于业务模型的<meta-value ...定义

我还必须将代码中的new“基类”替换为new“派生类”,但这是可以接受的,因为所有这些位置都在我的业务模型程序集中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49877784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档