hibernate的formula的初级使用

  1. 实体类的一个属性可以对应数据库表里的多个列,这个属性的值由formula 获得
  2. < property   formula = "。。。"   name = "topicCount" />
   以前片面的理解为sql语句必须写在()里,如下面
  1. < 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)
  1. < property   name = "name"   formula = "concat(first_name,last_name)" />
   假设我们获取了一个id为1的vo实例,那么hibernate就是执行如下sql语句用于取得name的值
  1. select concat(first_name, last_name) from user where id= 1 ;
   这下子对于formula里的sql语句为什么必须放在括号里应该明白了,因为formula里面的值会作为一条sql语句select和from之间的 内容,我们把sql语句放到括号里实际上就是做为一条子查询执行!!! 例如最开始示例的的rank对应的sql语句就应如下样子
  1. select (select count(*) from score s where s.score>sc.score) from score sc where sc.id=1;

你可能感兴趣的:(sql,mysql,Hibernate)