<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>旁门左道 &#187; Nhibernate</title>
	<atom:link href="http://log.medcl.net/item/category/dode/net/nhibernate/feed/" rel="self" type="application/rss+xml" />
	<link>http://log.medcl.net</link>
	<description>记录生活</description>
	<lastBuildDate>Wed, 08 Feb 2012 02:51:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>NHibernate中的识别器（discriminator）</title>
		<link>http://log.medcl.net/item/2010/03/nhibernate-in-the-identifier-discriminator/</link>
		<comments>http://log.medcl.net/item/2010/03/nhibernate-in-the-identifier-discriminator/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 07:30:59 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[Nhibernate]]></category>
		<category><![CDATA[discriminator]]></category>
		<category><![CDATA[识别器]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=243</guid>
		<description><![CDATA[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 这就区分了，而且不用你手动操作 Tags: discriminator, Nhibernate, 识别器]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/03/nhibernate-in-the-identifier-discriminator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nhibernate,“Antlr.Runtime.NoViableAltException”</title>
		<link>http://log.medcl.net/item/2010/03/nhibernate-u0026quotantlr-runtime-noviablealtexceptionu0026quot/</link>
		<comments>http://log.medcl.net/item/2010/03/nhibernate-u0026quotantlr-runtime-noviablealtexceptionu0026quot/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 05:38:24 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[Nhibernate]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[HQL]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=242</guid>
		<description><![CDATA[今天出现这个异常，记录下，“Antlr.Runtime.NoViableAltException”，出现这个异常，首先请检查你的HQL语句是否有语法错误 另外贴一篇HQL,学习... From:http://www.cnblogs.com/lyj/archive/2008/10/15/1312089.html 本节内容 NHibernate中的查询方法 NHibernate查询语言(HQL) 1.from子句 2.select子句 3.where子句 4.order by子句 5.group by子句 实例分析 结语 上一节，我们初步搭建了一个NHibernate程序，完成了映射Customer表并读取数据功能，这一节和下一节我们初步探讨一下在NHibernate中的查询方法。我这之前还是先回忆一下上一节完成的东西，其中一张图很多人回复说非常经典，简单明了！还是看着图。总结一下上一节三个重要的事情：建立数据库表-----编写持久化类-----编写映射文件，然后配置使用了。 NHibernate中的查询方法 在NHibernate中提供了很多查询方式给我们选择，这里仅仅列举了3种方式：NHibernate查询语言(HQL，NHibernate Query Language)、条件查询(Criteria API，Query By Example(QBE)是Criteria API的一种特殊情况)、原生SQL(Literal SQL，T-SQL、PL/SQL)。每个人有不同的喜好和特长，可以根据自己的情况选择使用其中的一种或几种。这一节我们介绍NHibernate查询语言(HQL，NHibernate Query Language)。 NHibernate查询语言(HQL) NHibernate查询语言(HQL，NHibernate Query Language)是NHibernate特有的基于面向对象的SQL查询语言，它具有继承、多态和关联等特性。实际上是用OOP中的对象和属性映射了数据库中的表和列。 例如这一句：select c.Firstname from Customer c Customer是数据库表，Firstname是列；而对于HQL：Customer是一个对象，Firstname是Customer对象的属性。相比之下SQL语句非常灵活，但是没有编译时语法验证支持。 本节介绍基础语法：from子句，select子句，where子句，order by子句，group by子句并分别举出可以运行的实例。至于关联和连接，多态(polymorphism)查询，子查询在以后具体实例中学习。注意：HQL关键字不区分大小写。 注意：由于篇幅有限，我在这里仅仅贴出了数据访问层的代码，就是在业务逻辑层可以直接调用的方法。测试这些方法的代码就没有贴出来了，你可以下载本系列的源代码仔细看看测试这些方法的代码。这节，我们在上一节源代码的基础上，在数据访问层中新建QueryHql.cs类用于编写HQL查询方法，在数据访问的测试层新建一QueryHqlFixture.cs类用于测试。 1.from子句 顾名思义，同SQL语句类似： 1.简单用法：返回表中所有数据。 public IList From() { //返回所有Customer类的实例 return _session.CreateQuery("from Customer") .List(); } 2.使用别名：使用as来赋予表的别名，as可以省略。 [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/03/nhibernate-u0026quotantlr-runtime-noviablealtexceptionu0026quot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

