博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA或Hibernate中的
阅读量:6429 次
发布时间:2019-06-23

本文共 1165 字,大约阅读时间需要 3 分钟。

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

 

转载于:https://www.cnblogs.com/netliang/p/4218899.html

你可能感兴趣的文章
[转]DPM2012系列之六:在Win7上安装DPM远程管理控制台
查看>>
postgres函数
查看>>
Microsoft AJAX Library Cheat Sheet(5): Number和Error类型的扩展
查看>>
批处理设置Java环境变量/命令行设置Java环境变量
查看>>
POJ 3580 SuperMemo(splay)
查看>>
AfxGetMainWnd函数
查看>>
WebView增加一个水平Progress,位置、长相随意
查看>>
easyui messager alert 三秒后自动关闭提示
查看>>
带你Python入门,踏进人工智能领域
查看>>
core data 基础操作
查看>>
手机共享电脑网络
查看>>
ORM框架Hibernate (四) 一对一单向、双向关联映射
查看>>
20140616 科技脉搏 -最大颠覆来自创业公司与边缘产业
查看>>
UVAoj 11324 - The Largest Clique(tarjan + dp)
查看>>
offsetLeft, offsetTop以及postion().left , postion().top有神马区别
查看>>
visual studio 中GIT的用法
查看>>
数据库中触发器before与after认识
查看>>
手动露天广场和立方体
查看>>
随机选择
查看>>
【Java并发编程三】闭锁
查看>>