数据库中的表的一个字段ObjectId类型为char(36),但在hql用该字段作为条件查询时,NHibernatete生成的sql却是用nvarchar作为参数类型,因为类型不一样导致查询时无法使用索引,请问如何才能令NHibernate生成的sql是char而不是nvarcharhql:
"from settings t1 where t1.ObjectId = ?"NHibernatete生成sql如下:
exec sp_executesql N'select materialex0_.ObjectExtendId as ObjectEx1_261_, materialex0_.ObjectId as ObjectId261_, materialex0_.SettingsId as SettingsId261_ from settings materialex0_ where (materialex0_.ObjectId=@p0 )', N'@p0 nvarchar(36)', @p0 = N'2e49f0d8-f2e2-4ea3-a8a9-2fda356dfb7e'
hbm.xml:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="settings ,Entity" table="settings" lazy="false"> <id name="ObjectExtendId" column="ObjectExtendId" type="String" >
<generator class="assigned"/>
</id>
<property column="ObjectId" type="String" name="ObjectId" />
<property column="SettingsId" type="String" name="SettingsId" />
</class>
</hibernate-mapping>
"from settings t1 where t1.ObjectId = ?"NHibernatete生成sql如下:
exec sp_executesql N'select materialex0_.ObjectExtendId as ObjectEx1_261_, materialex0_.ObjectId as ObjectId261_, materialex0_.SettingsId as SettingsId261_ from settings materialex0_ where (materialex0_.ObjectId=@p0 )', N'@p0 nvarchar(36)', @p0 = N'2e49f0d8-f2e2-4ea3-a8a9-2fda356dfb7e'
hbm.xml:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="settings ,Entity" table="settings" lazy="false"> <id name="ObjectExtendId" column="ObjectExtendId" type="String" >
<generator class="assigned"/>
</id>
<property column="ObjectId" type="String" name="ObjectId" />
<property column="SettingsId" type="String" name="SettingsId" />
</class>
</hibernate-mapping>
解决方案 »
- javascript 怎样把<input type="button" />替换成<span></span>?
- 图片轮换效果结合数据库
- 请问谁有Google或者淘宝的搜索框提示效果的代码呀?
- 500分求此问题的答案,关于codesmith实体类生成的问题
- DropDownList问题
- 关于解密的问题
- 数据访问的问题 急!!!
- 帮我看下这个函数哪里写错了?(50分,在线等待,解决马上结贴)
- DataGrid出了点问题,帮忙看看
- 思归请进
- 各位高手 请问我之前把textbox控件的text为空 后来我在textbox录入了值,就用label想动态绑定textbox.text 怎么办?
- 一存储过程,正解即结贴
<column name="ObjectId" sql-type="char(32)"/>
</property>