- 浏览: 448095 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (108)
- Ibatis (0)
- ZK (13)
- 设计模式 (3)
- Java编程 (21)
- 正则表达式 (2)
- 开发小续 (2)
- 杂谈 (1)
- 数据库 (6)
- Hibernate (6)
- Struts 2 (2)
- Spring (2)
- 版本控制 (4)
- Subversion (1)
- Myeclipse (1)
- EL (1)
- jsp (1)
- CAS (1)
- SSO (1)
- Restful Web Service (3)
- jersey (2)
- jersey与spring (1)
- web service框架 (1)
- 系统分析 (1)
- Subversion windows service (1)
- tomcat (1)
- PermGen Space (1)
- 编程心得 (1)
- google map api (1)
- springmvc (1)
- ajax (1)
- Hibernate QBC (1)
- oracle oracle10g (1)
- RBAC 权限设计 (1)
- springsecurity 3 (1)
- JPA (1)
- JPA j2ee (1)
- maven java (1)
- Jquery框架 UI框架 (1)
- printcss (1)
- java reflect 反射 (1)
- Jquery框架 UI框架 3scschool (1)
- collabnet Subversion (1)
- linux redhat (1)
- mysql (3)
- spring spring-data-jpa (1)
- Jquery AjaxForm (1)
- Jquery Map (1)
- linux (3)
- linux nginx openssl zlib pcre (1)
- linux jdk (1)
- 物联网技术 嵌入式 C# (1)
- oracle 数据库 (1)
- oracle (5)
- maven (1)
- java 定时器 (1)
- swing (1)
- java (2)
- 短信接口 (1)
- DBUtils (1)
- JDBC (1)
- javascript json (1)
- shiro (1)
- 权限系统 (1)
- 嵌入式 (1)
- 树莓派 (1)
- python (1)
- Github (1)
- 代码托管 (1)
- 产品设计 (2)
- 产品需求 (2)
- BRD (1)
- MRD (1)
- PRD (1)
- DRD (1)
- FRD (1)
- GIS (1)
- SOA (1)
- 网站资源 (1)
- 骆驼 (1)
- 黑客技术资源 (1)
- 网络安全资源 (1)
- 个人修炼 (1)
- Angular2 (1)
- Nodejs Krakenjs (1)
最新评论
-
GeorgeFeng:
学习啦,感谢
RBAC用户权限管理数据库设计 -
徜徉の小溪:
yuanliangding 写道请求进来时,创建的对象都不是由 ...
基于RESTful Web Service 的Jersey框架与Spring完美整合 -
yuanliangding:
请求进来时,创建的对象都不是由Spring弄出来的。。
基于RESTful Web Service 的Jersey框架与Spring完美整合 -
Ripin_Yan:
我已经按照你的xml这个顺序配置了,结果还是中文乱码。是还有什 ...
SpringMVC使用注解@ResponseBody返回json中文乱码 -
王静娜:
作者的实体图画的很好很有条理,但是个人觉得用户组对应的是资源, ...
RBAC用户权限管理数据库设计
Hibernate 中的Formula 攻略(转载)
键字: hibernate formula阅读对象:
1.已经在使用Hibernate JPA完成持久化映射的朋友。
2.在网上搜索Formula并通通搜到转载oralce一篇技术文章或hibernate annotations技术文档的朋友。
3.发现@Formula不能使用并想Ctrl+Delete hibernate jar包,然后砸烂显示器的朋友。
文章内容
本文将说明如何使用@Formula,并且说明在哪几种情况下@Formula会失灵。
1.Formula的作用
引用hibernate annotations技术文档中的解释可以很好的说明@Formula的作用,但它确实没有说清楚怎么使用,并且给出的示例是用不了的,这让我浪费了好几个钟头的时间!
Formula的作用就是说白了就是用一个查询语句动态的生成一个类的属性,比如java eye登陆之后 收件箱显示有几封未读邮件的数字,就是一条select count(*)...构成的虚拟列,而不是存储在数据库里的一个字段。用比较标准的说法就是:有时候,你想让数据库,而非JVM,来替你完成一些计算,也可能想创建某种虚拟列,你可以使用sql片段,而不是将属性映射(物理)列。这种属性是只读的(属性值由公式求得).Formula甚至可以包含sql子查询
Formula真的这么强大吗?确实,它很好很强大,节省了不少代码!
2.使用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 {
- @Id
- @GeneratedValue(strategy = IDENTITY)
- private int id;
- @Formula("(select COUNT(*) from user)")
- private int count;
- 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;
- }
- }
数据库表:
- CREATE TABLE `test`.`user` (
- `id` int(10) unsigned NOT NULL auto_increment,
- PRIMARY KEY USING BTREE (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
细节1.使用@Formula 你的注解必须是在属性上,如果有一个注解在方法上,那么@Formula将失效。这个我是做过实验的,比如把以上的java文件改为:
- 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是一个很常用且好用的东西!希望这篇文章能帮助你~~
发表评论
-
开源项目 企业框架,学习资料
2013-05-13 16:10 1579Spring mvc+hibernate+freemar ... -
maven 通用配置
2013-04-27 10:02 3020在搭建maven 项目的时候,我们很 ... -
SpringMVC使用注解@ResponseBody返回json中文乱码
2012-11-27 14:42 12492----------------------------- ... -
CAS 单点登录client,server端分析
2012-04-09 13:14 12759本篇文章是对JA-SIG CAS(v3.3)的初步调研总 ... -
EL表达式 functions String处理函数
2012-03-27 14:56 425701.uri="http://java.sun.co ... -
Dom4jUtils 工具类让你更加方便操作XML的MarkerIce.Jar
2011-09-29 11:24 1652最近我闲着无聊,看到一篇文章关于XMl的操作.对于XMl操作相 ... -
getHibernateTemplate.load() 和get()之间的区别
2011-09-08 15:19 8751今天我在hibernate 进行 getHibernateTe ... -
hibernate LazyInitializationException异常解决
2011-05-24 15:41 1149这是hibernate 的常见异常 虽然他的问题很 ... -
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
2011-05-24 09:16 1631先推荐一篇关于排序算法的文章:http://www.cpp ... -
struts2整合JSON,JQuery 实现ajax功能
2011-05-17 10:23 24524月 我使用到了 struts2 整合JQuer ... -
在spring来管理实例对象prototype和singleton的选择.针对action如何使用
2011-04-22 15:54 1376默认情况下,从bean工厂所取得的实例为Singleton(b ... -
hibernate 调用分页存储过程 异常
2011-04-15 09:05 1530我在做项目的时候 一直在为分页查询而头疼,于是 ... -
Unable to instantiate default tuplizer 启动tomcat 时的异常
2011-04-07 16:14 15906今天在修改项目的时候,犯了一个很低级的错误, 错误很小 ,但一 ... -
Apache Commons工具集简介
2011-03-22 14:33 1278Apache Commons包含了很多开源的工具,用于解 ... -
java使用定时器,定时发送邮件
2011-02-22 16:01 1698java使用定时器,定时发送邮件 ... -
JSP 分页标签库
2010-12-31 16:11 3055好了,该说一下怎么用 ... -
struts2类型转换机制
2010-12-31 14:17 1655struts2类型转换机制 package com. ... -
hibernate中lazy的使用
2010-12-28 13:09 1071hibernate中lazy的使用 lazy, ... -
java中web.xml的配置信息
2010-11-18 09:49 3772<?xml version="1.0&q ... -
forward,include,redirect的区别(转)
2010-08-27 13:54 1359forward,include,redirect是 ...
相关推荐
在Java的持久化框架Hibernate中,`hibernate.hbm.xml`文件是至关重要的,它定义了Java对象与数据库表之间的映射关系,使得对象模型能够与关系型数据库无缝对接。这篇文章将深入解析`hibernate.hbm.xml`的结构和主要...
在使用`Hibernate-tools`生成或更新`hbm.xml`文件时,可以通过命令行指定`-encoding UTF-8`参数来确保中文注释的正确输出。 2. **生成实体类注释** `Hibernate-tools`提供了一种方式来自动生成与数据库表对应的...
在 MyEclipse 中,我们可以使用 Hibernate 根据现有的数据库表结构生成实体和 hbm.xml 配置文件,这样可以避免手动编写 JPA 或 Hibernate 实体类。下面是生成实体和 hbm.xml 文件的步骤: 首先,需要创建一个 JPA ...
3. 将 hbm.xml 文件加入到 application.mappinginfo.xml 中:将 hbm.xml 文件加入到 application.mappinginfo.xml 中,以便于 Hibernate 可以正确地加载映射关系。 五、 小结 通过以上步骤,开发者可以使用 ...
通过myeclipse自动生成Hibernate类文件和hbm.xml文件,链接数据库库自动生成
hibernate.queries.hbm.xml这个文件需要放在jbpm*(版本).jar中。。的org.jbpm.db目录下,先删除以前的文件,然后,换上共享中这个。。大家可以用文件比较器看看,并没有改变以前的,只是新加了。。
hbm.xml文件中的name名字与实体类中不符合.
理解并正确配置Hibernate的`.hbm.xml`和`hibernate.cfg.xml`文件是使用Hibernate的关键步骤。`.hbm.xml`文件负责对象-关系的映射,`hibernate.cfg.xml`文件则包含了整个应用程序的数据库连接和其他配置。通过阅读...
在 Hibernate 中,`hbm.xml` 文件是用于定义对象与数据库表之间映射的元数据文件。这篇文档将深入解析 `hbm.xml` 配置的各个方面。 ### 1. `hbm.xml` 文件结构 `hbm.xml` 文件的开头通常包含 XML 声明和 DTD 引用...
在 MyEclipse 中,我们可以使用 Hibernate 工具来生成 POJO 类和映射文件 .hbm.xml。 首先,我们需要在 MyEclipse 中添加 Hibernate 支持。我们可以右键点击工程,在弹出的菜单中选择“Add Hibernate Capabilities...
请输入包的名称和映射文件需要放到的文件夹之后运行CreateTableXml里的main方法,就可以自动生成映射文件了。记着刷新文件夹,要不然是看不到的。 当然只是一些基础的属性。对于一些比较复杂,还是需要自己来修改的...
本主题聚焦于如何在Oracle环境中自动生成Hibernate实体类(`.java`文件)及其对应的映射文件(`.hbm.xml`文件)。这个过程通常是为了减少手动编写这些文件的工作量,提高开发效率。 首先,我们需要理解`Oracle`存储...
标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需的映射文件(hbm.xml)和对应的Java实体类。这个过程是数据库对象到Java对象(O/R Mapping)的...
本篇文章将详细解释如何在MyEclipse中生成hbm.xml文件,这是一个关键的步骤,因为它关联了数据库表与Java实体类,使得数据操作变得更加便捷。 首先,打开MyEclipse,通过工具栏中的`Window` -> `Show view` -> `...
在开发过程中,为了减少手动编写实体类(Entity)和对应的hbm.xml配置文件的工作量,Hibernate提供了一个逆向工程工具,可以基于现有数据库结构自动生成这些代码。 实体类是Java对象,它们代表数据库中的表,而hbm....
在hbm.xml文件中,我们可以使用`<many-to-one>`, `<one-to-many>`, 和 `<many-to-many>`标签来定义这些关联。下面将详细介绍这三个标签及其相关属性。 首先,我们来看`<many-to-one>`标签,它表示多对一的关系。...
在现代的Spring应用程序中,整合Hibernate时,我们通常会选择使用Spring的IoC(Inversion of Control)容器来管理数据访问层,而不是直接依赖于Hibernate的配置文件`hibernate.cfg.xml`。这是因为Spring提供了更高级...
“hbm.xml(模板)”是Hibernate的映射文件,它定义了Java类与数据库表之间的映射关系。开发者会在这里指定实体类的名称、属性与数据库表字段的对应,以及关联规则等。通过这种方式,Hibernate能够自动处理数据的...
- 对于通过hbm.xml生成的实体类,需要在hibernate.cfg.xml中添加相应的映射文件路径。 3. **测试连接**: - 运行测试程序,验证Hibernate是否能够正确读取映射信息并与数据库交互。 通过以上步骤,我们不仅能够...
在Java Web开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使开发者能够更专注于业务逻辑而不是底层数据存储。而`hibernate.cfg.xml`文件是Hibernate的核心配置文件,用于设置数据库连接参数、...