`

博客向导

 
阅读更多

转载于 http://whb198900.blog.163.com/ 

 

Hibernate之映射文件配置——formula  

Property元素中的formula允许对象属性包含导出值,比如sum、average、max等的结果。如:

  1. <property name="averagePrice" formula="(select avg(pc.price) from PriceCatalogue pc, SelectedItems si where si.priceRefID=pc.priceID)"/>  

此外,formula还可以基于当前记录的特定属性值从另一个表检索值。例如:

代码
  1. <property name="currencyName" formula="(select cur.name from currency cur where cur.id= currencyID)"/>  
代码
  1. <property name="schNum" formula="(select max(a.schoolNumb) from sys_act_code as a)"/>  

注意:
1,formula="()",里面的是sql语句,字段和表名都应该和数据库相应,而不是字段,若带有参数如cur.id= currencyID,这个currencyID才是对象的东东.
2,formula="( sql )",这个括号不能少,不然会报错,我试了几次,没括号就报错,添上就没问题
3,操作字段一定要用别名

问题:
 1,org.springframework.orm.hibernate3.HibernateSystemException: Null value was assigned to a property of primitive type setter of
没用别名,会出现这个错误,添个别名就好了

2,如果我要用obj.getSchNum()得到想要的值,该对象(obj)必须是hibernate取得的对象,

3,如果要传入参数,如上面那个,currencyID是该对象的属性,它的值也是有hibernate操作当前对象时,把该属性对应的值自动传入进去.

 

---------------------------------------------

 

hibernate-formula-场景one  

2012-03-01 17:30:41|  分类: Hibernate |  标签: |字号 订阅

在一个项目的某一个查询场景中,TEACHER表是主表,STUDENT表是TEACHER的子表,两者是以一对多的方式关联。业务逻辑需要查询多 条TEACHER表的数据,并且在查询出每条A表数据的同时还需要将对应STUDENT表的行数取出来。我们当然可以利用Hibernate先将每条 TEACHER数据load进来以后再以TEACHER.getStudents().size()这种方式取得对应的行数,但是代码会显得很繁琐并且增 加了许多需要执行的SQL语句,有没有什么替代的方法呢?

 

我们可以使用Hiberante的formula。

 

为了解决前面提到的问题,我们只需要在TEACHER 的orm配置文件里加上这样一个property,定义其formula属性如下:

 

----------------------------

 

<property name="rowCount"

 formula="(select count(*) from student a where a.ID= teacherId)"
 
 type="java.lang.String" />


 

-----------------------------

通过这种方式我们就可以在取得每一个TEACHER持久化对象的时候就方便的得到了需要的统计信息,可以大幅度的提高我们的开发效率。注意这里不单单可以用来统计记数,还可以用于sum,avg等其他统计。

 

在Hibernate 3.x之前,formula属性只能够出现在property元素中。现在仍然可以这样做,但是Hibernate 3.x提供了一个formula属性或元素(两者在formula的用法方面实质上是等效的),可以在许多元素中使用,包括discriminator、 many-to-one、one-to-one、element、many-to-many、map-key、map-key-many-to-many 和property。这样就大大提高了对象关系映射的灵活性,从而支持对复杂数据 模型的更为细粒度的解释。

 

从3.x开始,Hibernate 使用formula、filter、subselect等提高映射灵活性,提供细粒度的解释特性,从而将其推进到一个新的级别。

分享到:
评论
1 楼 曾老师 2012-09-24  
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.surveypark.domain">
<class name="Survey" table="surveys">
<id name="id" column="id" type="integer">
<generator class="identity" />
</id>
<property name="title" column="title" type="string" length="50" />
<property name="preText" column="pretext" type="string" length="50" />
<property name="nextText" column="nexttext" type="string" length="50" />
<property name="exitText" column="exittext" type="string" length="50"  />
<property name="doneText" column="donetext" type="string" length="50"  />
<property name="logoPhotoPath" column="logophotopath" type="string" length="200" update="false" />
<property name="createTime" column="createtime" type="timestamp"  />
<property name="closed" column="closed" type="boolean" update="false"/>
<!-- 通过公式映射做大值,计算列 -->
<property name="maxOrderno" formula="(select max(p.orderno) from pages p where p.surveyid = id)" />
<property name="minOrderno" formula="(select min(p.orderno) from pages p where p.surveyid = id)" />

<!-- 映射从Survey到User之间多对一关联关系 -->
<many-to-one name="user" column="userid" class="User" />

<!-- 映射从Survey到Page之间一对多关联关系 -->
<set name="pages" inverse="true" order-by="orderno">
<key column="surveyid" />
<one-to-many class="Page" />
</set>
</class>
</hibernate-mapping>

相关推荐

    Android 向导页效果

    详细分析见博客:http://blog.csdn.net/u011183394/article/details/46762307 该demo实现了向导页的左右滑动,且在最后一个页卡显示跳转按钮,并只在第一次进入程序才跳转至向导页,否则直接进入主页

    Qt实例类向导ClassWizardExample

    这是一个Qt帮助文档中的一个示例,类向导,我的博客中有一些要注意的问题,是在Windows下用Qt5做的 博客地址:http://blog.csdn.net/solomon5926/article/details/8696912

    博客精灵 V1.5 博客

    用户下载后运行这个文件,就能按照向导完成博客精灵 V1.5 的安装过程。安装过程中,软件可能会询问用户一些配置选项,例如安装路径、是否创建桌面快捷方式等,以便根据用户的偏好进行定制。 在使用博客精灵 V1.5 的...

    qt下载向导大全 只有你想不到的!

    6. **社区资源**:可能包含QT社区论坛链接、问答网站和博客文章,方便开发者交流问题和经验。 7. **平台适配**:由于QT是跨平台的,资料包中可能会有关于如何在不同操作系统(如Windows、Linux、macOS、Android、...

    MFC 表单向导

    此外,**博客链接**(虽然已失效)通常会提供更深入的解释和示例,帮助初学者理解MFC表单向导的使用,包括如何处理用户交互、错误检查以及与其他MFC组件的集成。 总的来说,MFC表单向导是开发Windows桌面应用程序时...

    Android ViewPager向导页面制作方法

    接着上一篇博客,上一篇博客跟大家分享了三种开始页面的定时跳转,根据项目需求接下来就说一下向导页面吧!几乎每一个APP都有自己的向导页面,一般都是第一次安装的时或者第一次进入应用时才有向导页面的,就是只...

    NISedit向导脚本

    使用NISedit安装向导生成的脚本,大部分设置采用默认值,仅对不能通过编译的设置进行了修改。 该文档主要是用于作为《NSIS安装包》系列博客的示例。

    vs2010 use mfc2008 向导

    在这种情况下,需要查阅相关文档或在线资源(如给出的博客链接:http://blog.csdn.net/laybor/article/details/11716779),了解如何在VS2010中适配MFC 2008的特定功能。 6. **调试和测试**: 完成代码编写后,...

    博客采集器教程.rar

    安装完成后,根据向导或用户手册进行基本配置,例如设置数据存储位置、选择要采集的博客源等。 2. **目标博客定义**:在博客采集器中,你需要明确指定要抓取的博客源。这可能涉及到输入博客网址、筛选特定分类或者...

    jquery 向导表单

    在链接提供的博客文章中,作者可能详细讲解了使用jQuery实现向导表单的源码过程,包括HTML布局、CSS样式和JavaScript逻辑。通过阅读这篇文章,你可以学习到实际的代码示例,这对于理解向导表单的工作原理和自定义...

    锐傲博客 个人博客制作.rar

    即使对于没有编程经验的用户,也能通过其直观的界面和向导式操作快速上手。博客的模板设计多样化,允许用户根据自己的喜好和需求选择不同的外观和布局,打造独特的视觉风格。 其次,内容管理是锐傲博客的另一大亮点...

    多博客同步发布神器OpenLiveWriterSetup

    只需双击运行,按照向导提示一步步操作,即可轻松完成安装。值得注意的是,安装过程中要确保电脑已连接互联网,以便下载必要的组件和更新。 OpenLiveWriterSetup的另一个优势在于其开源性质。作为一款开源软件,它...

    个人博客php源码完整版

    5. **运行安装向导**:访问服务器上的WordPress安装地址,按照向导提示输入数据库信息、站点设置等。 6. **安装主题和插件**:根据需要安装已选择的主题和插件,个性化博客功能和外观。 7. **定期更新**:为了安全和...

    向导WizardDialog和TitleAreaDialog简单示例

    在Java编程领域,`WizardDialog` 和 `TitleAreaDialog` 是两种常见的对话框类,...如果你遇到任何问题或需要进一步的解释,请查阅SWT的官方文档,或者参考在线社区如ITEYE上的博客和讨论,那里通常有丰富的资源和解答。

    简易PHP个人博客LnBlog v1.0.0.rar

    1. **安装简便**:LnBlog 提供了一键安装向导,用户只需几步简单的操作即可完成博客的部署,大大降低了入门门槛。 2. **文章管理**:支持新建、编辑和删除文章,用户可以设置文章的状态(如草稿、发布)、分类、...

    个人php博客

    最后,访问域名或服务器IP,根据安装向导完成博客系统的安装。一旦安装完成,你就可以开始发布文章,享受属于自己的博客空间了。 总之,“个人php博客”结合了PHP技术与ThinksNS框架,为用户提供了强大且灵活的个人...

    开源PHP博客平台OpenBlogv1.2.1

    OpenBlog是一个使用CodeIgniterPHP开发框架构建的开源博客平台。拥有:简洁和易于使用的界面。易于安装-OpenBlog提供安装向导让安装与配置变得非常简单。支持多种语言。支持通过模板更换外观,默认安装包含5种模板供...

    emlog博客源码

    下载源码后,解压到服务器的Web根目录,配置好数据库连接信息,通过浏览器访问安装页面,按照向导进行数据库创建和配置。 **3. 数据库结构** Emlog的数据库设计包括了文章表、分类表、用户表、评论表等多个核心表。...

    PJBlog4博客系统

    3.浏览器运行http://你的域名/install.asp,根据安装向导,填入相应信息(注意,这里放的目录是空间根目录,而不是你要安装的目录) 4.完成安装,开始PJBlog之旅! 温馨提示:系统默认账号admin,密码admin888 版本...

    百度博客备份工具百度博客备份工具

    6. **备份工具的使用**:通常,备份工具会有一个用户友好的界面,用户只需按照向导操作,选择要备份的内容和目标位置,即可自动完成备份任务。对于“fitgorekongjianbf”这样的文件,可能需要运行该程序来启动备份...

Global site tag (gtag.js) - Google Analytics