tbl_item是一张表,Item是它一个po,ItemDetail也是它的一个po,ItemDetail继承于
Item,那么将Item和ItemDetail持久到数据库的tbl_item中,那么tbl_item又是怎么区分的呢??tbl_item中有个字段DISCRIMINATOR,它是来区分的。
来看下他们的映射文件:
<class name="com.core.server.model.base.Item"
table="tbl_item"
discriminator-value="2">
<id name="id" column="id"><generator class="native" /></id>
<discriminator column="DISCRIMINATOR" type="int"/>
<subclass name="com.core.server.model.base.ItemDetail"
extends="com.core.server.model.base.Item"
discriminator-value="1">
</subclass>
当你用Item时hibernate就会将tbl_item表中的DISCRIMINATOR值置为2;当你用ItemDetail时hibernate就会将tbl_item表中的DISCRIMINATOR值置为1
分享到:
相关推荐
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次...
5.1.19. 字段和规则元素(column and formula elements) 5.1.20. 引用(import) 5.1.21. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围...
@hibernate.discriminator(column="type") public abstract class Animal { // ... } ``` ##### 1.4 @hibernate.jcs-cache (0..1) **功能描述**:启用JCS缓存。 **参数**:与@hibernate.cache相似,主要用于定义...
此外,Hibernate还会添加一个`discriminator column`,默认是`discriminator_value`,用来标识每条记录的实际类型。 配置Hibernate映射文件(如果是XML配置)时,需要设置`<class>`元素的`discriminator-value`属性...
6. **继承映射**:单表继承、联合继承和多表继承的策略,以及@Inheritance、@DiscriminatorColumn和@DiscriminatorValue等注解的使用。 7. **懒加载与立即加载**:理解懒加载(Lazy Loading)和立即加载(Eager ...
1. 单表继承:所有子类的数据都存储在一个表中,通常通过一个特定的字段(例如,discriminator column)来区分不同的子类。这是最节省空间但可能导致查询复杂化的策略。 2. 联合继承:每个子类都有自己的表,基类中...
这个类型标识字段在Hibernate中称为`discriminator column`,它是一个特殊的列,用于区分不同的子类。Hibernate会自动处理这个字段,开发者只需要在配置文件或者注解中指定。 #### 实现步骤 1. **定义父类**:创建...
为了实现这种映射,Hibernate使用了一个称为"discriminator column"的特殊列,这个列用于区分不同类的实例。例如,假设我们有一个基类`Animal`,以及两个子类`Dog`和`Cat`,在数据库表中,每个记录都会包含一个表示...
3. **单表继承(Single Table Inheritance)**: 这是最简单的继承策略,所有的子类数据都存储在同一个数据库表中,通过一个特定的列(通常为discriminator column)来区分不同子类的对象。 - discriminator value:...
在XML映射文件中,可以使用`<subclass>`或`<joined-subclass>`元素来定义子类,而在注解方式下,可以使用`@Inheritance`和`@DiscriminatorValue`等注解。 7. Collection Mapping(集合映射) 当一个对象需要关联多...
- `@DiscriminatorColumn` 和 `@DiscriminatorValue`: 在单表继承中,用于区分不同子类的字段和值。 **4. 嵌套注解与复合主键** - `@EmbeddedId` 和 `@Embeddable`: 用于创建复合主键,将多个字段组合成一个主键...
- `@Column`: 用于字段,映射到数据库表的列,可以设置列名、长度、是否可为空等属性。 - `@GeneratedValue`: 用于主键字段,定义主键生成策略,如.AUTO(自增)或.SEQUENCE(序列)。 - `@OneToOne`, `@...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个子类一张表”(Table per subclass)的方式。这种方式也被称为单表继承或多表...
@DiscriminatorColumn(name = "discriminator") public abstract class BaseEntity { // ... } ``` 5. **查询注解**:除了基本的CRUD操作,Hibernate还提供了`@NamedQuery`和`@NamedNativeQuery`注解来定义预...
- 这种策略将所有继承类的数据存储在一个单一的表中,通过一个特殊字段(通常是`discriminator_column`)来区分不同类的实例。 - Hibernate使用`@Inheritance(strategy=InheritanceType.SINGLE_TABLE)`注解来声明...
- `@Column`:定义字段在数据库表中的列名,可设置长度、是否允许为空等属性。 3. **属性注解**: - `@Basic`:默认注解,用于基本类型或引用类型的属性。 - `@Temporal`:针对日期和时间类型的属性,指定存储...
一个额外的字段,通常叫做`discriminator_column`,用来区分不同类的实例。优点是数据冗余少,但可能导致列数量较多,且查询时可能需要额外的类型判断。 2. **联合表继承(Joined Table Inheritance)** 每个子类...
2. **@DiscriminatorColumn**和**@DiscriminatorValue**: 在单表继承策略中,用于添加鉴别列和值。 3. **@Embeddable**和**@Embedded**: 支持复杂类型嵌入,将多个属性打包成一个复合类型。 六、懒加载和级联操作 ...
<discriminator column="subclass" type="character"/> ``` ### 关联映射 - **一对一映射**:使用`<many-to-one>`元素表示,如`<many-to-one name="friend" column="friend_id" update="false"/>`。 - **一对多...