昨天出了一个奇怪的问题,hibernate通过实体Id(char(10)型)取得数据,session.find("from TableName where id=?","value");取不到数据,但数据库里是有这个条数据。真奇怪,后来用pl/sql看数据库,鼠标点到Id那时,可以看到内容后面还有一些空格,带着期望与质疑把字段里的值自制过来, session.find("from TableName where id=?","value ");后发现可以。我特别试了下connection.createStatement("select * from table_name where id='value'");则正常取数据,session.find("from TableName where id=?","value");而却找不到数据,然后又试了下
ptmt = connection.prepareStatement(select * from table_name where id=?");
ptmt.setString(1,"year");
这样也不行,以是结论是:jdbc驱动PrepareStatement对char字段类型的查找问题,因为hibernate是用PrepareStatement的,自然,hibernate对char对应的属性条件查找出现找不到的情况,
解决办法是:
1.属性用TRIM函数处理:session.find("from TableName where TRIM(id)=?","value");
2.char改为varchar2类型
今天试了下mysql,它不会这样的情况,所以结论是:Oracle JDBC PreparedStatement的bug(有可能它故意这样)
分享到:
相关推荐
"解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...
在`oracle日期函数集锦.txt`中,我们可能会看到更多关于日期处理的函数,比如`EXTRACT`用于提取日期或时间字段,`NEXT_DAY`找到下一个特定星期的日期,`LAST_DAY`返回给定日期所在月份的最后一天。 接着,`JDBC常用...
在编写查询时,尽量避免查询不必要的字段;同时还需要注意合理设置 fetchSize 的值,Oracle 建议该值不超过 100。 #### 四、批量更新与内存消耗 除了查询缓存之外,批量更新操作也会导致大量内存消耗。每次调用 `...
Java JDBC(Java Database Connectivity)是Java语言中用来规范应用程序如何访问数据库的应用程序接口,它提供了标准的方法来连接、查询和操作数据库系统。在本案例中,我们将通过Java JDBC连接Oracle数据库,实现对...
要使用JDBC,首先需要在程序中加载数据库驱动,然后建立数据库连接,创建Statement或PreparedStatement对象,编写SQL语句,最后执行查询并处理结果。 2. **数据库连接** 在这个系统中,可能使用了诸如MySQL、...
JDBC是Java平台标准的一部分,它提供了一套接口和类,使得Java应用程序能够连接到各种类型的数据库,包括Oracle、MySQL、SQL Server等。在Java程序中,我们可以使用JDBC进行数据的增删改查操作。 首先,创建数据库...
Oracle JDBC驱动程序允许Java应用程序与Oracle数据库进行交互,包括创建、查询、更新和删除数据。 首先,我们需要导入必要的JDBC库,如`java.sql.Connection`、`java.sql.DriverManager`、`java.sql.Statement`等。...
JDBC提供了一种规范,使得开发者能够用Java语言编写数据库应用程序,而无需关心具体的数据库系统,如MySQL、Oracle或SQL Server等。学习JDBC对Java开发人员来说非常有用,因为它允许灵活地访问和操作数据存储。 在...
JDBC API主要包括几个核心接口和类,如`Connection`代表数据库连接,`Statement`用于执行SQL语句,`PreparedStatement`预编译SQL以提高性能,以及`ResultSet`用于存储查询结果。此外,`DriverManager`类负责管理所有...
在Oracle数据库中,为了优化大型数据表的查询性能和管理效率,可以采用分区技术。分区是一种将大表逻辑上划分为较小、更易管理的部分的方法。对于时间序列数据,如交易记录、日志数据等,按月分区尤其常见,因为这...
- **表结构和字段类型**:Oracle使用了诸如NUMBER、VARCHAR2、CHAR、DATE等字段类型,而MySQL的字段类型包括int、long、double、float、varchar、char等。 - **表引擎**:MySQL的表可以采用不同的存储引擎,如...
private static final String driver = "oracle.jdbc.driver.OracleDriver"; private static final String url = "jdbc:oracle:thin:@10.10.10.2:1521:orcl"; private static final String username = "test"; ...
根据给定文件的信息,本文将深入探讨如何在Java中操作Oracle数据库中的CLOB字段,包括添加和修改等操作。CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在处理如文章、评论等长文本时非常...
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "username", "password"); // 创建 Statement 对象 Statement stmt = conn.createStatement(); // 创建含 CLOB 字段的表 stmt...
根据提供的文件信息,我们可以推断出这是一份关于使用Java编程语言开发登录系统的文档,其中涉及到Oracle数据库的应用。下面将对这份文档所涉及的关键知识点进行详细的解析与扩展。 ### Java登录系统开发概述 ####...
在Java编程语言中,我们可以利用JDBC(Java Database Connectivity)API来与各种关系型数据库进行交互,包括Oracle数据库。在给定的“create-table.rar”压缩包中,我们看到一个名为“c16_1.java”的文件,这很可能...
Oracle数据库提供了对应的JDBC驱动,名为ojdbc.jar。在项目中,你需要将这个驱动添加到类路径中,以便Java程序能够识别并连接到Oracle数据库。 接下来,我们编写Java代码来建立数据库连接。使用`Class.forName()`...
在“DateBase_java_”项目中,开发者可能使用了JDBC来连接到一个数据库,比如MySQL、Oracle或SQLite等。 3. **数据库设计**:在创建数据库时,需要考虑数据模型,如关系型数据模型。这涉及到创建表(tables)、定义...
2. **SQL优化**:通过编写更高效的查询语句,例如避免子查询、使用连接(JOIN)代替子查询、利用索引、避免全表扫描、减少SELECT字段数量,以及使用EXPLAIN分析查询执行计划来识别性能瓶颈。 3. **事务**:事务是...