hibernate一些函数理解
2016-09-20 00:00
169 查看
uniqueResult();
这个方法是这样用的
当你能够肯定你的数据库中根据你的查询条件只会返回唯一结果,就可以用这个方法!
否则就用list();
其返回类型为 List<T>
可根据你的实际类型强转!
如果是result则是list类型。
在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况:
1.查询全部字段的情况下,如"from 实体类",list中封装的对象为实体类本身,各属性都将得到填充。
2.只查询一个字段,默认情况下,list中封装的是Object对象。
3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。
对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。
比较简单的解决方法是:在hql中使用 select new 包名.类名(属性1,属性2……) from 实体类,
同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,
这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。
或者是如:select new map(a.name as name, b.salary as salary) from Person as a ,Salary b where a.id= b.personId ;
这个方法是这样用的
当你能够肯定你的数据库中根据你的查询条件只会返回唯一结果,就可以用这个方法!
否则就用list();
其返回类型为 List<T>
可根据你的实际类型强转!
如果是result则是list类型。
在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况:
1.查询全部字段的情况下,如"from 实体类",list中封装的对象为实体类本身,各属性都将得到填充。
2.只查询一个字段,默认情况下,list中封装的是Object对象。
3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。
对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。
比较简单的解决方法是:在hql中使用 select new 包名.类名(属性1,属性2……) from 实体类,
同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,
这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。
或者是如:select new map(a.name as name, b.salary as salary) from Person as a ,Salary b where a.id= b.personId ;
相关文章推荐
- 对java中equals和hashCode函数的一些理解
- Spring+Hibernate集成后事务与Session的一些理解。
- 关于网络编程中一些常用函数的理解
- php一些常用函数的理解
- iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)
- 关于函数指针的一些理解与其他相关内容的联想
- 对寄存器ESP和EBP的一些理解(函数执行之前还做了什么事情?)
- 对java中equals和hashCode函数的一些理解
- Hibernate中的一些关键字理解
- 对python 函数的一些理解
- 对java中equals和hashCode函数的一些理解
- 关于函数返回值的一些理解
- 子函数中为调用者分配内存的一些理解
- 关于递归调用,函数指针,数组,字符串的一些理解
- C++函数一些理解
- 对java中equals和hashCode函数的一些理解
- bullet 中 btCollisionObject 的一些函数的理解
- 关于gets函数和fgets函数的一些理解
- Linux 的pthread_create 和 pthread_join 函数的一些新的理解
- C++成员函数的一些理解