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

时间: 2024-08-29 02:38:50

JPA或Hibernate中的的相关文章

JPA(Hibernate)

JPA 1,JPA:Java Persistence API.JPA通过JDK 5.0注解-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA是JavaEE中的标准.JPA标准只提供了一套规范,需要有JPA的具体实现,Hibernate实现了JPA2.0标准,所以我们在用JPA的时候,其实用的是Hibernate提供了JPA2.0规范的实现:JPA还有其他实现,比如OpenJPA,各个JPA的实现在使用细节上有一些不同,使用时需要注意:2,JPA和Hibernate对比: 1),JP

SpringMVC+Apache Shiro+JPA(hibernate)整合配置

序: 关于标题: 说是教学,实在愧不敢当,但苦与本人文笔有限,实在找不到更合理,谦逊的词语表达,只能先这样定义了. 其实最真实的想法,只是希望这个关键词能让更多的人浏览到这篇文章,也算是对于自己写文章的一个肯定吧.^_^! 关于内容: 再写这系列文章之前,本人和许多人一样都是伸手党,并深深的了解咱伸手党且英文较差的朋友对于新知识的学习及获取中文资料少的痛苦.所以本着"取之于民,共享与民"的原则,记录下实际工作中对SpringMVC+Shiro整合应用的部分心得.本人技术水平有限,仅希望

SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证

序: 在上一篇中,咱们已经对于项目已经做了基本的配置,这一篇文章开始学习Shiro如何对登录进行验证. 教学: 一.Shiro配置的简要说明. 有心人可能注意到了,在上一章的applicationContext.xml配置文件中,包含以下配置. <!-- 項目自定义的Realm --> <bean id="shiroDbRealm" class="org.shiro.demo.service.realm.ShiroDbRealm" ><

SpringMVC+Apache Shiro+JPA(hibernate)案例教学(三)给Shiro登录验证加上验证码

序: 给Shiro加入验证码,有多种方式,当然你也可以通过继承修改FormAuthenticationFilter类,通过Shiro去验证验证码.具体实现请百度: 应用Shiro到Web Application(验证码实现) 而今天我要说的,既然使用的SpringMVC,为什么不直接在Controller中就处理验证码验证,让事情变的更简单一点呢? 一.新建ValidateCode.java验证码工具类 package org.shiro.demo.util; import java.util.

Hibernate中的注解说明

Hibernate中注解注解比较多,常用的也就那么几个,在这里把Hibernate中的注解汇总总结一下. @Entity:将一个类声明为一个实体bean,即一个持久化POJO; @Id:声明bean的标识属性,即和表中的主键对应的属性: @Table:声明bean映射数据库中指定的表: @Column:声明bean的属性到表的列的映射,该注解还有以下属性: name:可选,属性要映射的列明,如果属性名和列名相同则可以省略: unique:可选,是否在该列上设置唯一约束,默认值为false: nu

Hibernate中注解的开发

在利用注解开发数据库持久层曾经,须要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范. 就类似于JDBC.Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们能够通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发如今也处于一种趋势.毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一.首先须要导入支持注解开发的jar包: hibernate-annotati

Annotation(二)——Hibernate中注解的开发

在利用注解开发数据库持久层以前,需要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范.就类似于JDBC,Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们可以通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发现在也处于一种趋势,毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一,首先需要导入支持注解开发的jar包: hibernate-annotatio

java框架整合例子(spring、spring mvc、spring data jpa、hibernate)

这是自己参考springside开源项目整合的框架,主要整合了spring.spring mvc.spring data jpa.hibernate这几个框架,对于这几个框架其中感觉比较舒服的还是spring data jpa这个框架,这个框架在写dao类的时候,只需要写一个接口声明,spring data jpa会自动的实现其实现类,使用起来比较方便,至于详细的使用方法还请自己百度吧,因为我也不清楚.个人感觉还有一个比较不错的地方就是能够打印sql语句,都知道hibernate打印的sql语句

JPA与Hibernate的关系

1.JPA JPA全称: Java Persistence API  JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.  JPA的出现?  JPA的出现有两个原因:  其一,简化现有Java EE和Java SE应用的对象持久化的开发工作:  其二,Sun希望整合对ORM技术,实现持久化领域的统一. 1.1.JPA提供的技术  (1)ORM映射元数据  JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框