write down,forget
分类 Category : Nhibernate

NHibernate中的识别器(discriminator)

<Category: Nhibernate> Comments Off on NHibernate中的识别器(discriminator)

Nhibernate说明:
识别器(discriminator)
在”一棵对象继承树对应一个表”的策略中,元素是必需的,它声明了表的识别器字段。识别器字段包含标志值,用于告知持久化层应该为某个特定的行创建哪一个子类的实例。只能使用如下受到限制的一些类型:String, Char, Int32, Byte, Int16, Boolean, YesNo, TrueFalse.


(1) column (可选 – 默认为 class) 识别器字段的名字

(2) type (可选 – 默认为 String) 一个NHibernate字段类型的名字

(3) force (可选 – 默认为 false) “强制”NHibernate指定允许的识别器值,就算取得的所有实例都是根类的。

(4) insert (可选 – 默认为 true) 当识别器是被映射的组件的标识符的一部分时设置为false。

标识器字段的实际值是根据元素的discriminator-value得来的.

force属性仅仅是在表包含一些未指定应该映射到哪个持久化类的时候才是有用的。这种情况不是经常会遇到。

转一下这篇,From:http://ttitfly.javaeye.com/blog/162766
关键字: hibernate中discriminator
tbl_user 是一张表。User是它一个po,NormalUser也是它的一个po,NormalUser继承于User,那么将User和NormalUser持久到数据库的tbl_user中,tbl_user是怎么区分的呢?tbl_user中有一个字段type,它是来区分的。

来看他们的映射文件:

Java代码


Java代码

当你用User时hibernate就会将tbl_user的type的值置为2,当你用NormalUser时hibernate就会将tbl_user的type的值置为1

这就区分了,而且不用你手动操作

本文来自: NHibernate中的识别器(discriminator)

Nhibernate,“Antlr.Runtime.NoViableAltException”

<Category: Nhibernate> 1 条评论

今天出现这个异常,记录下,“Antlr.Runtime.NoViableAltException”,出现这个异常,首先请检查你的HQL语句是否有语法错误

另外贴一篇HQL,学习…
From:http://www.cnblogs.com/lyj/archive/2008/10/15/1312089.html
阅读这篇文章的其余部分 »

本文来自: Nhibernate,“Antlr.Runtime.NoViableAltException”