|
|
1
3
基本上可以使用三种方法,其中一些已经讨论过:
我将在这里简要地展示选项2和3的一个例子,我相信在本文的前面,选项1已经被其他人充分地覆盖了。 选项2(如本例中所示)在可以将查询创建为select语句的子查询,以及在映射表中所有需要的参数都可用时特别有用。如果表不是可变的和/或缓存为只读的,这也会有所帮助,具体取决于存储过程有多重。
如果由于映射中的限制、缓存问题或当前缓存设置逐个而不是按更大的数量检索而无法实现上述目标,则应考虑使用其他方法,例如使用参数对整个查询进行单独映射。这与上面的createSqlQuery方法非常接近,但强制结果集为特定类型(并且可以声明性地设置每个属性):
您可以按如下方式调用此查询:
根据您的需要,您可以选择一种方法。我个人使用以下经验法则来决定使用哪种方法:
关于数据的排序:选择“公式”或“SQL查询映射”方法时,检索数据时必须进行排序。这与通过当前映射检索数据没有什么不同。 更新: 在SQL查询XML中纠正了严重的编辑错误。 |
|
|
2
1
你可以试试:
nhibernate对查询中的表和列别名很挑剔,因此需要让它使用语法扩展它们。另外,使用hql命名参数语法(:lat1而不是@lat1),并将setdecimal()更改为正确的数据类型。 |
|
|
3
0
Ayende在映射文件中解释了如何做到这一点,而不必诉诸于向会话传递SQL: http://ayende.com/Blog/archive/2006/09/18/UsingNHibernateWithStoredProcedures.aspx 另请参阅有关此问题的Hibernate文档(也与nhibernate相关): http://docs.jboss.org/hibernate/stable/core/reference/en/html/querysql.html |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |