技术标签: java null string criteria hibernate list example object
有人说Query更强大,但我人个比较喜欢用criteria,觉得使用criteria才符合Java开发的规范。
但criteria在使用example进行关联的对象查询时,会得到非预期的结果。
举个例子:
两个简单实体类Department:(部门)
以及另一个类Employee:(员工)
这两个表的关联关系我就不多说了,这行都应该都懂,呵呵。。。
此时,我需要通过一些特定的条件去查找employee,当然分页什么的就不说了,因为查询条件会根据客户需求不同而不同,所以直接使用Example进行操作
[code=java]
Criteria criteria = getSession().createCriteria(Employee.class);
if (empoyee != null) {
criteria.add(Example.create(empoyee ));//这里会忽略关联
}
//.....中间是分页等处理
List<?> result = criteria.list();
[/code]
注意上面的注释,Example进行查询是会忽略所有的null值以及关联的对象,故,如果我想根据empoyee 的department来查询empoyee 的话,就会将所有的empoyee 都查询出来,因为department被忽略了。
遇到这个问题有两种解决方法:
一、我的做法如下:
[code=java]
Criteria criteria = getSession().createCriteria(Employee.class);
if (empoyee != null) {
criteria.add(Example.create(empoyee ));//这里会忽略关联
//加强后的Example查寻,不再忽略关联对象
criteria.createCriteria("dpartment").add(Restrictions.eq("id",empoyee .getDepartment.getId()));
}
//.....中间是分页等处理
List<?> result = criteria.list();
[/code]
二、下面是我在网上看到别人的做法,个人感觉有点麻烦:
(转)那么这个问题怎么解决呢,查看了Example类的源码后,我决定动手修改——当然不能直接去改它的源码,在参考了hibernate官方论坛后,新建了类:
[code=java]
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.EntityMode;
import org.hibernate.HibernateException;
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import org.hibernate.engine.TypedValue;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.type.AbstractComponentType;
import org.hibernate.type.Type;
import org.hibernate.util.StringHelper;
/**
* A copy of Hibernate's Example class, with modifications that allow you to
* include many-to-one and one-to-one associations in Query By Example (QBE)
* queries.
* association class </a>
*/
public class Assoc
concurrent.futures模块在异步编程中非常常用,我常用在tornado里用它将同步操作异步化,这么优秀的模块,肯定很好奇它的内部原理的。 在网上搜了一些资料,感觉附加讲解还不如代码详细,于是就自己去看源码了, 而源码非常优秀,文件结构也非常简单,只有三个文件:_base.py:主要定义了一些常量、类、方法等,为thread和process使用process.py:Process_futures 源代码
随时随地阅读更多技术实战干货,充分利用闲暇时间,请关注源代码社区公众号(ydmsq666)和技术交流群。转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人...
//call_function.h#ifndef CALL_FUNCTION_H#define CALL_FUNCTION_Htypedef int *callback_random(char *random,int len);void set_callback(callback_random *cb);int genrate_random(char *random,int len);#endif//call_function.c#include "call_function.h"#_linux 定时器自定义回调函数怎么写
变量的引用练习目录变量的引用练习一、题目二、代码三、结果写在最后一、题目c++风格的程序,输入两个整数,将它们由小到大输出,要求使用变量的引用二、代码#include<iostream>#include<cmath>using namespace std;void cal(int &a,int &b);int main(){ int x,y; cout<<"请输入两个大小不一样的整数"<<endl; cin>_编写一个c++风格的程序,输入两个整数
一、复习:二、1、在usart.c文件中主函数2、在usart.c中若用printf函数,需要确定串口的类别,是usart1还是usart2deng,需要改成对应的_css串口通讯实验程序讲解
1.首先下载pycharm专业版,路径自寻,这边就不细说了。(社区版不支持远程配置)2.获取服务器的IP和密码3.打开pycharm,点击菜单栏 :工具tools—>部署deployment–>configuration点击左上方+号step1:与服务器建立连接点击 …点击确定我们的需求是,在pycharm 编译器下 使用服务器 运行代码。因此,与服务器建立连接后,我们需要将本地文件映射到服务器中(有一种镜像的感觉? )故需要在服务器创建一个 文件存放 要运行的代码。s
转载自https://blog.csdn.net/vip_wangsai/article/details/72592649linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法。其主要用于字符串的输出。命令格式:语法:#echo [Options] [String]方括号中的项目是..._echo $shell
23.求解级数问题23.1 求几何级数的值如果级数只包含 2n2^n2n 或 e3ne^{3n}e3n 这样的指数,那么它可能是一个或多个几何级数之和首项为 r0=1r^0=1r0=1首项为 ar0=aar^0=aar0=a例1:例2:例3:23.2 应用第 n 项判别法(首要考虑的方法)例子:23.3 应用比式判别法(适用于级数含阶乘、指数)例1:例2:例3:......
1.拓扑图GRE 是在网络上建立直接点对点连接的一种方法,目的是简化单独网络之间的连接。2.配置概况####R1配置syssys R1dhcp enableacl 2000rule 1 permit source 10.10.10.0 0.0.0.255interface g0/0/1ip address 10.10.10.254 24dhcp select interfaceint g0/0/0ip address 223.1.1.1 24nat outbou..._两个单位间的内网通讯
以下为PHP语言调用去水印接口的示例,分别展示GET请求方式和POST请求方式的调用方式。示例代码中用到的userId和secretKey请前往开发者接口管理中心获取。GET请求方式调用接口示例:$url = 'https://v.douyin.com/JjEFdHT/';//请把此处的userId和secretKey换成你自己的 这是GET请求方式$api = 'https://api.hen..._小红书去水印接口php源码
概述结构1.可编程输入\输出单元2.可配置逻辑块(逻辑阵列块)3.数字时钟管理模块4.嵌入式块5.布线资源6.底层内嵌功能单元7.内嵌专用硬核特点有丰富的FF触发器,更适合完成时序逻辑电路的设计;分段式布线结构决定了其信号的延时是不可预测;有很大的编程灵活性;集成度比较高;基于SRAM编程,所以可以任意编程。可以解决全定制ASIC流片后不可修改的不足;也能克服PLD\CPLD中可编程器件门电路有限的缺点。工作原理查找表:实质上就是一种RAM,FPGA之所以可以反复编程就是因为有查找
目录一、项目结构1.py文件解释2.函数组成及调用关系3.IPO图二、opts.py解读三、main.py解读四、models.py解读五、dataset.py解读瞎写八写在前第一次读代码,读了快一周了还是迷离迷糊的,不知道从哪读起,也不知道怎么debug,python学的感觉也用不到,用到的都是没学的。慢慢来把,争取下一周读完+能在工作站上跑一下UCF-101的数据集。上周日看了Randy教授的最后一课,感触最深的一段话是他说的遇到困难时候的态度,以前读到这种感觉就是鸡汤一看而过,当真正开始遇到这种_项目结构:main.py是训练脚本test_models.py是测试脚本opts.py是参数配置脚本datas