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();

最新文章

  1. 实际操作中命令 su 与 sudo 的区别(转)
  2. HDU 4010.Query on The Trees 解题报告
  3. ♫【JS基础】壹零零壹
  4. js框架页跳转
  5. linux服务器安全小知识
  6. 编写在浏览器中不弹出警告的ActiveX控件
  7. PHPSingleton模式的例子
  8. WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用
  9. C# 启动停止SQLServer数据库服务器
  10. 使用 ado.net访问数据库
  11. nagios监控mysql及邮件报警
  12. Spring Boot tomcat
  13. arduino:int & double 转string 适合12864下使用
  14. Z-index研究 opacity和z-index一起使用
  15. JSON JAVA 总结
  16. Hbase学习之概念与原理
  17. 使用依赖关系注入在 ASP.NET Core 中编写干净代码
  18. java基础知识 构造方法
  19. 中兴u880e精简教程
  20. No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()

热门文章

  1. [原创]用命令行工具删除TFS2010服务器上的工作区信息
  2. mac版本cornerstone的无限期破解方法【转】
  3. net-force.nl/steganography writeup
  4. 爬虫requests模块 1
  5. 解决select2在bootstrap的modal中默认不显示的问题
  6. npm设计代理
  7. JDBC URL FOR ORACLE, wrong or correct, how do you know? ORA-12505
  8. Android 笔记 a+b day6
  9. Linux init
  10. 如何在EF中实现left join(左联接)查询