首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate的formula的低级使用

2012-09-27 
hibernate的formula的初级使用实体类的一个属性可以对应数据库表里的多个列,这个属性的值由formula 获得p

hibernate的formula的初级使用

    实体类的一个属性可以对应数据库表里的多个列,这个属性的值由formula 获得<property?formula="。。。"?name="topicCount"/>
?? 以前片面的理解为sql语句必须写在()里,如下面
    <property?name="rank"?formula="(select?count(*)?from score?s?where?s.student_score>student_score)"/>
?? 举个例子说明formula真正的用法,假设user表里面有first_name和last_name属性。在映射的vo里面指定了name属性用于表示两个字段合起来的字符串,使用formula实现如下(数据库用的mysql)
    <property?name="name"?formula="concat(first_name,last_name)"/>
?? 假设我们获取了一个id为1的vo实例,那么hibernate就是执行如下sql语句用于取得name的值
    select?concat(first_name,?last_name)?from?user?where?id=1;
?? 这下子对于formula里的sql语句为什么必须放在括号里应该明白了,因为formula里面的值会作为一条sql语句select和from之间的内容,我们把sql语句放到括号里实际上就是做为一条子查询执行!!! 例如最开始示例的的rank对应的sql语句就应如下样子
    select?(select?count(*)?from?score?s?where?s.score>sc.score)?from score sc where sc.id=1;

热点排行