`

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是实体类的全名称,包括所在的包名称。              

分享到:
评论

相关推荐

    EJB3JPA调用原生SQL和函数存储过程[归类].pdf

    本篇主要探讨如何在EJB3与JPA环境中调用原生SQL查询以及如何创建和使用Oracle的存储过程。 1. EJB3与JPA调用原生SQL EJB3引入了JPA作为标准的数据持久化框架,允许开发者使用JPQL(Java Persistence Query ...

    spring boot jpa写原生sql报Cannot resolve table错误解决方法

    Spring Boot JPA写原生SQL报Cannot resolve table错误解决方法 Spring Boot JPA写原生SQL报Cannot resolve table错误解决方法是指在使用Spring Boot框架和JPA(Java Persistence API)时,编写原生SQL语句报Cannot ...

    Jpa 原生SQL分页查询“一个别名引发的一场血案”

    在本文中,我们将深入探讨一个由别名引发的问题,即"Jpa 原生SQL分页查询‘一个别名引发的一场血案’"。 首先,问题的起因是开发者在执行分页查询时,没有为SQL查询语句中的表或字段指定别名。在分页查询的第一页,...

    spring-jpa-oracle:演示将 CHAR 列持久化到 Oracle 数据库

    背景如果文本值存储在数据类型为CHAR(n)的 Oracle 列中,则数据库在将该值保存到列之前最多n字符。 后来,尝试使用 Hibernate 或 JPA 等框架搜索具有相同值的列失败,因为搜索词没有填充到n ,导致搜索词与列中存储...

    jpasql.rar

    在JPA中,SQL的使用通常是隐式的,由JPA框架自动生成,但也可以通过特定的方法手动编写和执行。 **JPA工厂** 是用来创建EntityManager实例的机制,EntityManager是JPA的核心接口,负责管理实体对象并提供与数据库...

    spring boot+jpa+sqlserver+bootstrap

    【标题】"Spring Boot + JPA + SQL Server + Bootstrap 整合应用" 【知识点详解】 在现代Web开发中,Spring Boot、JPA、SQL Server和Bootstrap是四个非常关键的技术组件,它们共同构建了一个高效、易用且功能强大...

    SpringBoot+JPA+Freemarker 生成动态SQL

    这种方式提高了代码的可读性和可维护性,减少了因SQL错误导致的问题。 在提供的"demo"压缩包中,可能包含了这个系统的部分源码,包括SpringBoot的配置、实体类、Repository接口、Freemarker模板、Service类以及...

    myabtis + jpa + sql sever

    MyBatis 可用于执行复杂的SQL查询和存储过程,而JPA则为业务逻辑层提供了方便的对象映射。Spring框架作为基础,可以很好地管理和协调这两个ORM机制。 配置数据库时,通常会涉及到以下步骤: - 创建数据库连接配置...

    Hibernat使用原生的SQL

    标题 "Hibernat使用原生的SQL" 涉及的是在Java开发中如何利用Hibernate框架执行自定义的SQL语句。Hibernate是一个流行的Object-Relational Mapping (ORM) 工具,它允许开发者以面向对象的方式操作数据库,而无需直接...

    JPA--HQL查询(手动写原生查询sql,复杂查询必备).pdf

    JPA--HQL查询(手动写原生查询sql,复杂查询必备) JPA(Java Persistence API)是一种JavaEE标准,用于持久化数据,HQL(Hibernate Query Language)是 Hibernate 框架提供的一种查询语言,它允许开发者使用面向...

    java + spring boot +jpa 拦截器分库分表demo

    创建一个自定义的JPA拦截器,比如`ShardingInterceptor`,这个拦截器将在每个JPA的查询或保存操作之前/之后执行。在拦截器中,我们需要根据业务规则(例如:用户ID、订单号等)计算出目标库和表的索引,然后修改SQL...

    springboot利用jpa连接hibernate用法2

    在本文中,我们将深入探讨如何在Spring Boot应用中利用Java Persistence API (JPA) 连接Hibernate,并执行基本的数据操作,如生成表、增删查改。Spring Boot简化了设置和配置过程,使得与Hibernate集成变得更为便捷...

    springboot使用JPA时间类型进行模糊查询的方法

    Spring Boot 使用 JPA 时间类型进行模糊查询的方法 Spring Boot 是一个流行的 Java 框架,用于构建基于 Spring 的应用程序。JPA(Java Persistence API)是 Java 持久层 API 的一个标准规范,用于实现数据库的持久...

    maven+springboot+jpa+shiro权限管理内有数据库sql

    本项目采用"Maven+SpringBoot+JPA+Shiro"的组合,旨在提供一个强大的权限管理解决方案,并附带了数据库SQL脚本,使得开发者能够快速搭建并扩展功能。下面将详细阐述这些技术组件以及它们在项目中的作用。 首先,...

    FluentJPA:Fluent API,用于用Java为JPA编写类型安全SQL查询

    通过JPA重新控制SQL FluentJPA是一种用于关系(SQL)数据库和JPA的语言集成查询(LINQ)技术。 它允许您通过直接集成到语言中来使用Java编写强类型查询。FluentJPA如何集成到Java中? 乍一看,似乎我们需要Java...

    SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)

    SQL注入是一种严重的安全威胁,它允许攻击者通过在应用程序的输入字段中插入恶意SQL代码来执行未经授权的数据库操作。攻击者通常寻找没有适当验证和过滤的用户输入,然后利用这些漏洞来构造能改变原始SQL语句意图的...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    rsql-jpa-specification:Java库将RSQL转换为Spring Data JPA规范和QueryDSL谓词

    rsql-jpa规范 将RSQL查询转换为org.springframework.data.jpa.domain.Specification或com.querydsl.core.types.Predicate和support实体关联查询。 Maven仓库 将RSQL的rsql-jpa-spring-boot-starter添加到Spring JPA...

    agile-jpa : spring-data-jpa扩展

    原生动态sql解析支持 依靠agile-sql(动态sql解析器)实现jpa中对sql语法段的动态解析,弥补其在动态sql解析方面的短板。面对复杂查询语句将不再是难点。内置slq分页与jpa分页 JPA风格的Do类对象操作形式分页与原生...

Global site tag (gtag.js) - Google Analytics