hibernate的formula的初级使用

本文详细解析了在ORM映射中使用Formula属性进行数据库查询的方法,尤其针对如何通过Formula组合数据库字段来形成新的属性值进行了深入探讨。文章通过具体示例展示了Formula在不同场景下的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值