Hibernate hbm.xml中查询数据作为杜撰列Formula使用
Hibernate hbm.xml中查询数据作为虚拟列Formula使用Hibernate 中的Formula 攻略(转载)键字: hibernate for
Hibernate hbm.xml中查询数据作为虚拟列Formula使用
Hibernate 中的Formula 攻略(转载)键字: hibernate formulapackage?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是一个很常用且好用的东西!希望这篇文章能帮助你~~