文档章节

关于Hibernate 中formula简介

lvzjane
 lvzjane
发布于 2013/06/06 23:03
字数 451
阅读 1767
收藏 7

今天做项目第一次用到Hibernate的formula,解决了困扰了很长时间的一个问题

以前做各种层级树的时候,查询结点是不是叶子结点,如果是叶子节点就直接展开图标,当时想到了几种解决方案但是总感觉别扭,今天看hibernate书籍的时候看到了formula可以解决关于派生属性的映射,把项目中的代码重构了一下,顿时感觉很不错。

以前的解决方案如下:

解决方案一:在对应的entry上面做一个一对多关联,然后再创建一个临时字段

@Transient

private String shiFouYZJD

在getShiFouYZJD()中判断关联查询的set集合是不是empty,然后给shiFouYZJD附上对应的标识位,这种做法理解是好理解,但是当我的树层级超过三级树上节点数目超过一万就挂了,举个例子假如第二层节点有一百个,每个节点下再挂100个子节点。。。那么关联查询内存中存放的对象你懂得100*100.。。。

性能很受影响。

解决方案二:写sql,用createSQLQuery然后得到一个List<Object[]> 类型的集合。。。紧接着做遍历new个实体然后使劲的set值。。如果一个表中有30个字段。。。你会瞬间崩溃的各种if(value!=null),最后功能实现了,但是代码你自己看的都蛋疼。。你自己都会想到肯定会有比这好的方法

今天用了formula感觉不错,简单介绍下用法,很简单但是以前真没注意到这个

@formula(select nvl(count(1),0) from danweixx d where d.shangji=danweidm)

private String shiFouYZJD;

然后对应的查询hql就直接hql = “from **Entry”


© 著作权归作者所有

lvzjane
粉丝 55
博文 126
码字总数 50791
作品 0
海淀
高级程序员
私信 提问
Hibernate 中 formula的简单应用

在一个项目的某一个查询场景中,TEACHER表是主表,STUDENT表是TEACHER的子表,两者是以一对多的方式关联。业务逻辑需要查询多条TEACHER表的数据,并且在查询出每条A表数据的同时还需要将对应...

mr桀骜不驯
2013/03/09
1K
0
Hibernate 中中的formula属性

Property元素中的formula允许对象属性包含导出值,比如sum、average、max等的结果。如: <property name="averagePrice" formula="(select avg(pc.price) from PriceCatalogue pc, SelectedI......

街头浪子
2016/01/18
150
0
Hibernate 中中的formula属性的使用

Hibernate 中 formula属性的好用处在于 无需在数据库有真实的列 只需要写出sql 就可以创建一个虚拟的列 然后在 Dao层的查询中使用 ,比如在表 MConfirmation 中有两列 ConfirmationCost 和 ...

业余编程人士
2014/02/28
1K
0
Hibernate 学习资料汇总

1.Hibernate系列——总结篇(http://blog.csdn.net/jiuqiyuliang/article/details/41318751) 2.Hibernate框架简述(http://www.cnblogs.com/eflylab/archive/2007/01/09/615338.html) 3.Hiber......

IT追寻者
2016/08/06
29
0
数据库派生属性

派生属性写法:(只在hibernate框架下使用过,其他没有测试。) (主要解决一个实体javabean有A字段,但是本实体对象对应的数据表没有A字段。需要从其他表中获取本字段) 从其他数据库获取数...

李永china
2016/04/27
61
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
今天
4
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部