JPA或Hibernate中的
JPA执行原生SQL截断Char类型问题
在JPA的API中执行原生SQL:EntityManager.createNativeQuery(String sqlString); 传入参数是原生SQL语句,返回SQL对象。
如果oracle数据库中某个字段定义的是char类型,比方说是char[2],当使用EntityManager.createNativeQuery(String sql); 去查询这些值的时候,发现返回的结果集中只要数据库中是char类型的,都只返回一个字符。
原因:hibernate将char 类型的字段转化成了character。 因此造成查询结果不对。
解决办法:
【1】只需要在SQL语句中把数据库中是Char类型字段,加个trim函数处理就可以了。
【2】用EntityManager.createNativeQuery(String sqlString, Class resultClass) 方法替换成以下方法即可:EntityManager.createNativeQuery(String sqlString); 其中Class resultClass是实体类的全名称,包括所在的包名称。
hibernate 中createQuery与createSQLQuery两者区别是:
前者用的hql语句进行查询,后者可以用sql语句查询
前者以hibernate生成的Bean为对象装入list返回
后者则是以对象数组进行存储
所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便
突然发现createSQLQuery有这样一个方法可以直接转换对象
Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);
XXXXXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。
呵呵以后多注意,还是时不时的要看看hibernate各个对象方法的使用。
分页:
Hibernate中的分页语句可以这么写
session = HibernateUtils.getSession();
session.beginTransaction();
Query query = session.createQuery("from User");
query.setFirstResult(0);//从第一条记录开始
query.setMaxResults(4);//取出四条记录
List userList = query.list();
最新文章
- 实际操作中命令 su 与 sudo 的区别(转)
- HDU 4010.Query on The Trees 解题报告
- ♫【JS基础】壹零零壹
- js框架页跳转
- linux服务器安全小知识
- 编写在浏览器中不弹出警告的ActiveX控件
- PHPSingleton模式的例子
- WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用
- C# 启动停止SQLServer数据库服务器
- 使用 ado.net访问数据库
- nagios监控mysql及邮件报警
- Spring Boot tomcat
- arduino:int &; double 转string 适合12864下使用
- Z-index研究 opacity和z-index一起使用
- JSON JAVA 总结
- Hbase学习之概念与原理
- 使用依赖关系注入在 ASP.NET Core 中编写干净代码
- java基础知识 构造方法
- 中兴u880e精简教程
- No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()
热门文章
- [原创]用命令行工具删除TFS2010服务器上的工作区信息
- mac版本cornerstone的无限期破解方法【转】
- net-force.nl/steganography writeup
- 爬虫requests模块 1
- 解决select2在bootstrap的modal中默认不显示的问题
- npm设计代理
- JDBC URL FOR ORACLE, wrong or correct, how do you know? ORA-12505
- Android 笔记 a+b day6
- Linux init
- 如何在EF中实现left join(左联接)查询