Hibernate学习笔记:每个具体的类一张表
2009-08-31 13:28
393 查看
这种做法是不再有父类表,每个子类一个表,子类除了专有字段,还有父类的字段,只有父类有配置文件,父类配置文件通过union-subclass标识子类。
为了不和以前的demo产生冲突,新建表monkey1, tiger1;
monkey1(id, name, zoo_id, age);
tiger1(id, name, zoo_id, kind);
需要注意的是:因为hibernate通过id辨别对象,为了父类不产生冲突,子类不能使用identity, native等主键生成方式。
以上配置文件要注意两点:
1 class Animal要标识为abstract;否则在查询所有animal的时候会出错;
2 id使用了uuid. 不能用identity, sequence, native等。
写测试用例查询所有的Animal会发现,hibernate通过union来操作的。
为了不和以前的demo产生冲突,新建表monkey1, tiger1;
monkey1(id, name, zoo_id, age);
tiger1(id, name, zoo_id, kind);
需要注意的是:因为hibernate通过id辨别对象,为了父类不产生冲突,子类不能使用identity, native等主键生成方式。
<hibernate-mapping> <class name="model.Animal" abstract="true"> <id name="id" column="id"> <generator class="uuid" /> </id> <property name="name" /> <many-to-one name="zoo" class="model.Zoo" column="zoo_id" /> <union-subclass name="model.Monkey" table="monkey1"> <property name="age" /> </union-subclass> <union-subclass name="model.Tiger" table="tiger1"> <property name="kind" /> </union-subclass> </class> </hibernate-mapping> <!-- create table monkey1( id varchar(32) primary key, name varchar(20) not null, zoo_id int, age int ) create table tiger1( id varchar(32) primary key, name varchar(20) not null, zoo_id int, kind int ) -->
以上配置文件要注意两点:
1 class Animal要标识为abstract;否则在查询所有animal的时候会出错;
2 id使用了uuid. 不能用identity, sequence, native等。
写测试用例查询所有的Animal会发现,hibernate通过union来操作的。
相关文章推荐
- Hibernate实战_笔记28(每个带有联合的具体类一张表)
- Hibernate学习笔记:继承映射之每个子类一张表,使用辨别标志
- Hibernate学习笔记:继承映射之每个子类一张表
- Hibernate学习笔记:混合使用每个继承结构一张表 和 每个子类一张表
- Hibernate学习笔记:继承映射之每个类继承结构一张表
- Hibernate实战_笔记27(每个带有隐式多态的具体类一张表)
- hibernate继承关系映射方法(三)--每个具体类一张表TPC
- hibernate继承映射关系 —— 每个具体类映射成一张表
- Hibernate实战_笔记29(每个类层次结构一张表)
- Hibernate映射类继承之每个带有隐式多态的具体类一张表(每个子类各一张表,有各自的映射文件)
- hibernate继承映射策略之每个具体类一张表
- hibernate继承映射之每个具体类一张表
- 【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表
- Hibernate继承映射之每个具体类一张表
- Hibernate映射类继承之每个带有联合的具体类一张表(每个子类各一张表,共用一个父类映射文件)
- Hibernate 继承映射实现方式之每个具体类对应一张表
- hibernate之多态关联(多态的多对一,利用any,使用每个具体类一张表的策略)
- 【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
- 十四、Hibernate实体映射(每个具体类映射成一张表)
- hibernate3.3.2学习笔记---三种对象状态&删除数据&获取数据库对象&更新数据库对象