`
qxd8304
  • 浏览: 15004 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate配置subclass

阅读更多

在配置subclass的时候出现了

 

写道
[main] ERROR org.hibernate.util.XMLHelper - Error parsing XML: XML InputStream(26)
The content of element type "class" must match "(meta*,subselect?,cache?
,synchronize*,(id|composite-id),discriminator?,(version|timestamp)?,
(property|many-to-one|one-to-one|component|dynamic-component
|properties|any|map|set|list|bag|idbag|array|primitive-array|query-list)*,
((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?
,sql-update?,sql-delete?,filter*)"
 

我的xx.hbm.xml配置是这样的:

写道
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.summit.pojo.Animal" table="animal">
<id column="id" type="long" name="id">
<generator class="uuid"></generator>
</id>
<property name="name" column="name" type="string"></property>
<discriminator type="string">
<column name="animalType"></column>
</discriminator>
<subclass name="com.summit.pojo.Dog" discriminator-value="dog">
<property name="jump" type="string"></property>
</subclass>
<subclass name="com.summit.pojo.Kitchen" discriminator-value="kitchen">
<property name="fly" column="fly" type="string"></property>
</subclass>
</class>
</hibernate-mapping>

当我把discriminator删除掉的就正确了,可是又不符合定义子类映射的要求,所以 从google上搜索,包括查看hibernate-mapping-3.0.dtd,可以看到是到class的这一段描述:

写道
<!ELEMENT class (
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)*
)>

 可以看到discriminator必须要在id的后面定义,所以把discriminator改到id后面就OK了,像这样:

写道
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.summit.pojo.Animal" table="animal">
<id column="id" type="long" name="id">
<generator class="uuid"></generator>
</id>
<discriminator type="string">
<column name="animalType"></column>
</discriminator>
<property name="name" column="name" type="string"></property>
<subclass name="com.summit.pojo.Dog" discriminator-value="dog">
<property name="jump" type="string"></property>
</subclass>
<subclass name="com.summit.pojo.Kitchen" discriminator-value="kitchen">
<property name="fly" column="fly" type="string"></property>
</subclass>
</class>
</hibernate-mapping>
 
分享到:
评论

相关推荐

    Hibernate ORM - 继承关联关系之union-subclass

    为了实现“union-subclass”策略,我们需要在Hibernate配置文件中定义映射关系。这通常涉及到以下几点: 1. **配置父类**:定义父类的Hibernate映射,包括公共属性和标识字段。例如,`...

    Hibernate配置文件中映射元素详解

    【Hibernate配置文件中映射元素详解】 在对象关系映射(ORM)框架Hibernate中,对象与数据库表之间的关联是通过一个XML配置文件来定义的。这个XML文件包含了映射元素,用于描述Java类如何转化为数据库中的表。映射...

    Hibernate3.1_学习源码

    01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有session的关闭后重建问题。 02 02Hibernate_UseMyEclipse: 利用...

    hibernate

    **标题:** Hibernate 实体继承策略:...在提供的压缩包文件中,"hibernate" 和 "hibenateAnno" 可能包含了更多关于 Hibernate 使用和注解配置的示例,通过学习这些资源,你可以进一步巩固和深化对 Hibernate 的理解。

    Hibernate-api Hibernate文档

    1. Configuration:配置对象,用于加载Hibernate配置文件,建立SessionFactory。 2. SessionFactory:它是线程安全的,用于创建Session实例,是整个Hibernate的核心。 3. Session:是与数据库交互的接口,执行CRUD...

    hibernate 体系结构与配置 参考文档(html)

    Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 1.3.5...

    hibernate的dtd文件

    DTD(Document Type Definition)文件在Hibernate中扮演着重要的角色,它们定义了Hibernate配置文件的结构和语法。这些文件是XML schema,用来验证Hibernate配置文件是否符合规范。 `hibernate.cfg.xml`是Hibernate...

    Hibernate 经典例子全

    Hibernate支持单继承和多层继承的映射,通过`&lt;subclass&gt;`或`&lt;joined-subclass&gt;`标签将子类映射到数据库中的特定表,这在设计复杂的对象模型时非常有用。 **四、一对一关系映射** 在`hibernate_one2one_ufk_1`示例...

    Hibernate 项目图片资料

    3. **Hibernate配置文件(hibernate.cfg.xml)** 这是Hibernate项目的起点,配置包括数据库连接信息、方言、缓存等。例如,设置`&lt;property name="hibernate.connection.url"&gt;`来指定数据库URL。 4. **...

    美国硅谷SVSE软件工程教育Hibernate-Lesson2

    【Hibernate配置与ORM】 Hibernate是一种流行的Java持久化框架,它实现了对象关系映射(ORM),使得开发者能够使用面向对象的方式处理数据库操作。在本课程"美国硅谷SVSE软件工程教育Hibernate-Lesson2"中,主要...

    hibernate 经典题目 其中包括很多核心的题目

    缺省的 XML 格式配置文件名为 `hibernate.cfg.xml`,通常放在类路径(classpath)下,其根元素是 `&lt;hibernate-configuration&gt;`,子元素包括 `&lt;session-factory&gt;`。配置数据库方言的属性是 `dialect`,配置数据库连接...

    HIBERNATE - 符合Java习惯的关系数据库持久化

    此外,还需要创建或修改Hibernate配置文件,该文件通常包含以下关键部分: 1. **配置文件**:用于初始化Hibernate SessionFactory,其中包含数据库连接信息、使用的方言(Dialect)、事务管理策略等。 2. **实体类...

    hibernate-html-single

    12. **继承映射(Inheritance Mapping)**: Hibernate支持类的继承结构映射到数据库,如单表策略、表-per-hierarchy策略和表-per-subclass策略。 13. **懒加载(Lazy Loading)**: 为了提高性能,Hibernate允许延迟...

    Hibernate+中文文档

    1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 ...

    hibernate开发与实战 源代码

    7. **Chapter 14 - 子类继承(Subclass)**:Hibernate支持单表继承、联合继承等多种继承策略。这一章节可能涉及如何使用`@Inheritance`和`@DiscriminatorColumn`等注解来处理类的继承关系。 8. **Chapter 16 - 事件...

    (2)Hibernate3.2 中的类继承关系

    `dataBase.sql`文件可能包含了初始化数据库的SQL脚本,用于创建与Hibernate配置对应的数据库结构。例如,对于单表继承,它可能会创建一个包含`discriminator`字段的表。 `TestHibernateSuperClass`很可能是一个测试...

    hibernate3.2中文文档(chm格式)

    1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 ...

    HibernateAPI中文版.chm

    1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 ...

Global site tag (gtag.js) - Google Analytics