随笔-81  评论-874  文章-0  trackbacks-53

我碰到、想到和回答过的NHibernate里的不能单独成文的小知识点,持续更新。

 Q:不设置Cache时NHibernate会使用二级缓存吗

A:会,它会使用NHibernate.Cache.HashtableCacheProvider

 
Q:配置文件中use_outer_join和max_fetch_depth有什么作用

A:当使用关联影射时,如果未设置延迟加载,如果use_outer_join为true,则NHibernate用带join的Sql同时读取对象;为false,则分两条Sql读取。

max_fetch_depth表示最多join几个对象。

 

Q:查询时如何分页

A:使用ICriteria时

ISession session=factory.OpenSession();
ICriteria criteria
=session.CreateCriteria(typeof(News));
criteria.SetFirstResult(fromResult);
criteria.SetMaxResults(count);
return criteria.List();

使用IQuery时

IQuery query = Session.CreateQuery(hql);
query.SetFirstResult(fromResult);
query.SetMaxResults(count); 
return query.List();

SetFirstResult设置从那天记录开始,SetMaxResults设置取几条数据

 
Q:Sql2005有dialect吗

A:有,NHibernate论坛可以找到,单独的文件,以后版本可能会加入NHibernate内部。

MsSql2005Dialect.

 

Q:Access有dialect吗

A:NHibernateContrib里面有NHibernate.JetDriver.JetDialect


Q:Guid的unsaved-value怎么设置
A:unsaved-value="00000000-0000-0000-0000-000000000000"

posted on 2006-08-09 09:44 DDL 阅读(4304) 评论(25)  编辑 收藏 所属分类: NHibernate

评论:
#1楼  2006-08-29 10:33 | guoshaohong [未注册用户]
在NHibernate1.0中如何支持时间戳,我在配置文件中了用了version、timestamp可是都提示不支持此配置节
  回复  引用    
#2楼  2006-08-31 12:26 | 非我      
用Nhibernate1.2会检查成员是不是虚的,以前的版本没这问题,是不是配置属性改变了?
  回复  引用  查看    
#3楼 [楼主] 2006-08-31 12:30 | DDL      
@非我
1.2的确是存在这个现象.可能是为了实现某些新功能吧.

1.2现在还不是稳定版本,我建议你还是使用1.02版本.
  回复  引用  查看    
#4楼 [楼主] 2006-08-31 12:41 | DDL      
@guoshaohong
介绍个用NH做的项目给你看看
Cuyahoga

你可以从
http://sourceforge.net/project/showfiles.php?group_id=153246
下载

里面用到了timestamp
  回复  引用  查看    
#5楼  2006-08-31 21:38 | gothing [未注册用户]
NHibernate如何返回"返回最后插入的标识值",就像用SQL语句
SELECT @@IDENTITY AS 'Identity'
  回复  引用    
#6楼 [楼主] 2006-09-04 11:47 | DDL      
@gothing
不明白你为什么要调用SELECT @@IDENTITY AS 'Identity'

如果你想得到最近保存的实体的Id,直接访问就可以了

User user=new User;
user.Name="DDL";
...
session.Save(user);

int newUserId=user.Id;
...
  回复  引用  查看    
#7楼  2006-09-04 15:00 | gothing [未注册用户]
@DDL
谢了!原来考虑的是多人新增数据时id会不一致,既然hibernate能解决问题,我就不操心了。
  回复  引用    
#8楼  2006-09-15 21:16 | 杨炎武      
请问一下 many-to-one 如何设置才能让 Parent 查询的时候可以把 Child 关联的数据也查找出来,但更新和插入操作却不影响到子表?

下面是我的映射文件的写法,虽然更新和操作不影响到子表,但查询记录中也不包括子表

<many-to-one name="chile" class="..." insert="true" update="true" cascade="none">
<column name="parent_id" ... />
</many-to-one>

  回复  引用  查看    
#9楼 [楼主] 2006-09-18 10:14 | DDL      
@ 杨炎武
在Parent
<bag name="Children" cascade="none" inverse="true" lazy="true">
<key column="ParentId"/>
<one-to-many class="DDLLY.TestNHibernate.TestAssociation.OneToMany.Child,DDLLY.TestNHibernate.TestAssociation"/>
</bag>

在Child
<many-to-one name="Parent" column="ParentId" class="DDLLY.TestNHibernate.TestAssociation.OneToMany.Parent,DDLLY.TestNHibernate.TestAssociation" />


这样应该就可以了
  回复  引用  查看    
#10楼  2006-09-20 15:50 | 杨炎武      
@DDL
谢谢
  回复  引用  查看    
#11楼  2006-10-01 14:13 | Justin Wang      
关注ing...
  回复  引用  查看    
#12楼  2006-10-02 10:14 | Minwell      
请问有没有 2.0的 好一些的实例, 只根据自己的理解作 心里总是不舒服,太想看一下其他的 项目的结构!!!!
  回复  引用  查看    
#13楼  2006-10-15 11:28 | Zhongkeruanjian      
NET这边用NHIBERNATE的开源项目比较少,都是些小例子,比如CodeProject有个NHIBERNAT最佳实践,开源项目有个Cuyohoga,这是个CMS,这个项目不是很活跃。前几个版本做得比较乱,现在的版本与Castle集成,还没有发布,你可以用SVN取它的最新版本。

哈,NET这边对NHIBERNATE的态度不像JAVA对待HIBERNATE的态度。大家都在等MS的LINQ。
  回复  引用  查看    
#14楼  2006-11-12 19:27 | guoshaohong [未注册用户]
谢谢大家了,这个问题后来我看了孙玉琴的<java对象持久化技术详解>才知道
version元素以及timestamp元素的位置要紧跟在<id>元素的后面。
  回复  引用    
#15楼  2006-11-23 13:51 | zhou [未注册用户]
如何执行下列语句,删除重复记录 :
DELETE FROM Price WHERE (ID IN (SELECT MAX(ID) AS Expr1 FROM Price AS tPrice_1 GROUP BY ProName, MarketID HAVING (COUNT(*) > 1)))


其中 MarketID为外键,其他一张表通过一对多对应到price表
  回复  引用    
#16楼  2006-12-14 22:51 | 麒麟.NET      
请问什么版本的NH支持泛型?
  回复  引用  查看    
#17楼  2007-01-18 09:24 | 守候彩虹      
请问,我在做One-to-many映射时,当我把Id属性的做如下设置时 :<generator class="assigned" />,总是不能将数据插入到数据库,而用NUint测试时不抱错,将class设置为"indenity"时,可以插入成功,我用的时nh1.2 beta
  回复  引用  查看    
#18楼  2007-02-13 20:59 | rooping      
NH多数据链接怎么支持?
有详细例子吗?
谢谢?
  回复  引用  查看    
#19楼  2007-03-22 00:20 | ni [未注册用户]
请问一下,出现以下情况,到底是哪处地方配置错了?
错误:could not update: [ChatRoom.Entity.UserInfo#1][SQL: UPDATE UserInfo SET NickName = ?, UserName = ?, Password = ?, Birthday = ?, Gender = ?, LastLoginTime = ?, LastLoginIP = ?, Status = ?, Type = ?, FaceUrl = ?, Remark = ? WHERE UserId = ?]

谢谢!期待中......
  回复  引用    
#20楼  2007-04-06 22:30 | guoshaohong [未注册用户]
大家好,我现在使用的是NHibernate1.02版本,我在映射文件中需要映射double类型的字段,也就是需要指定它的精度和小数点位数,可是我在property标签上或者在column标签上写了precision和scale两个属性,但是出错信息提示无效的属性名。
我想问的问题是在Nhibernate1.02版本中是不是不支持指定double类型的精度,如果支持的话正确的方式如何。如果不支持那么NHibernate1.20版本是否支持?
在此先谢谢大家的回答。

  回复  引用    
#21楼  2007-06-10 20:41 | Ben [未注册用户]
问一个问题,就是我做两个表关联,但是关联的主外键不是自增长ID,而是一个CODE,但是在连接的时候,子表总是自动的关联ID,我看了一下,只要把<id>这个标签改为CODE就以CODE为条件,有什么方法可以不用<id>标签而可以关联的?
  回复  引用    
#22楼  2007-06-10 21:09 | Ben [未注册用户]
用property-ref字段可以是CODE ,但是值是ID 的值.

  回复  引用    
#23楼  2007-08-23 11:22 | 华为菜鸟 [未注册用户]
还是有点不太清楚,最好提供一下文档!
  回复  引用    
#24楼  2008-01-07 20:50 | winefish [未注册用户]
我guid设置unsaved-value好了"00000000-0000-0000-0000-000000000000"还总是不正确,真不知道哪里出问题了
  回复  引用    
#25楼  2008-03-05 12:40 | omeweb [未注册用户]
你好,我有个问题,要插入的时候,数据库里有的字段有默认值,那该怎么办,还有就是,我有时候要更新一个字段,那要怎么办,谢谢了
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-25 14:11 编辑过


相关链接: