Hibernate

http://www.openfans.net/viewArticle.html?id=200

根据Hibernate 3.1.2说明文档:

5.1.6. 鉴别器(discriminator)

在"一棵对象继承树对应一个表"的策略中,<discriminator> 元素是必需的, 它定义了表的鉴别器字段。鉴别器字段包含标志值,用于告知持久化层应该为某个特定的行创建哪一个子类的实例。 如下这些受到限制的类型可以使用: string , character , integer , byte , short , boolean , yes_no , true_false .

<discriminator
        column="discriminator_column"                      (1)


        type="discriminator_type"                          (2)


        force="true|false"                                 (3)


        insert="true|false"                                (4)


        formula="arbitrary sql expression"                 (5)


/>
(1)

column (可选 - 默认为 class ) 鉴别器字段的名字

(2)

type (可选 - 默认为 string ) 一个Hibernate字段类型的名字

(3)

force(强制) (可选 - 默认为 false ) "强制"Hibernate指定允许的鉴别器值,即使当取得的所有实例都是根类的。

(4)

insert (可选 - 默认为true ) 如果你的鉴别器字段也是映射为复合标识(composite identifier)的一部分,则需将 这个值设为false 。(告诉Hibernate在做SQL INSERT 时不包含该列)

(5)

formula (可选) 一个SQL表达式,在类型判断(判断是父类还是具体子类-译注)时执行。可用于基于内容的鉴别器。

鉴别器字段的实际值是根据<class><subclass> 元素中 的discriminator-value 属性得来的。

force 属性仅仅在这种情况下有用的:表中包含没有被映射到持久化类的附加辨别器值。 这种情况不会经常遇到。

使用formula 属性你可以定义一个SQL表达式,用来判断一个行数据的类型。

<discriminator
    formula="case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
    type="integer"/>

 

 

 

 

 

你可能感兴趣的:(sql,C++,c,Hibernate,.net)