首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Hibernate hbm.xml中查询数据作为杜撰列Formula使用

2012-09-09 
Hibernate hbm.xml中查询数据作为虚拟列Formula使用Hibernate 中的Formula 攻略(转载)键字: hibernate for

Hibernate hbm.xml中查询数据作为虚拟列Formula使用

Hibernate 中的Formula 攻略(转载)键字: hibernate formula
        package?aa; ????import?static?javax.persistence.GenerationType.IDENTITY; ????import?javax.persistence.Entity; ??import?javax.persistence.GeneratedValue; ??import?javax.persistence.Id; ??import?javax.persistence.Table; ????import?org.hibernate.annotations.Formula; ????/**???*?注解必须是在属性上的,如果有任何一个注解在方法上,那么@Formula将失效???*?@author?昆明蜂鸟软件???*?@version?0.1.0?2008-7-15?下午06:09:38???*/??@Entity??@Table(name?=?"user",?catalog?=?"test") ??public?class?User?{ ?????? ??????private?int?id; ????????@Formula("(select?COUNT(*)?from?user)") ??????private?int?count; ?????? ??????@Id??????@GeneratedValue(strategy?=?IDENTITY) ??????public?int?getId()?{ ??????????return?id; ??????} ????????public?void?setId(int?id)?{ ??????????this.id?=?id; ??????} ????????public?int?getCount()?{ ??????????return?count; ??????} ????????public?void?setCount(int?count)?{ ??????????this.count?=?count; ??????} ??}??

      ?

      ?这样@Formula就不可以运行!!!我前边就是被Hibernate官方的文档给搞晕了。

      细节2.既然@Formula 是一个虚拟列,那么数据库中不需要建这一列,同样可以,如果有个列存在,hibernate也会将?? 其忽略。以上示例中的user就没有count列。

      细节3.sql语句必须写在()中,这个以前也有人说过。

      细节4.如果有where子查询,那么表需要用别名,比如 select COUNT(*) from user where id=1 是错的

      而select COUNT(*) from user u where u.id=1是正确的

      细节5.只要是你在数据库的sql控制台执行过的语句,并且使用了表别名,那么@Formula都应该是支持的。

      ?

      ?确实@Formula是一个很常用且好用的东西!希望这篇文章能帮助你~~

热点排行