昨天出了一个奇怪的问题,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(有可能它故意这样)
分享到:
相关推荐
20、JDBC中的PreparedStatement相比Statement的好处 71 21、写一个用jdbc连接实例。 71 22、ArrayList和Vector的区别? 73 23、List、Set和Map的区别? 74 24、Collection 和 Collections的区别。 74 25、Set里的...
Q0032 Oracle的集合操作函数,如sum(),avg(),max(),min(),与select,where,grouby,having的先后顺序,使用方法 Oracle集合查询基本知识,只有进行分组的列,才可以取在集合查询SQL语句中取字段,先Group By,再Having...
23、JDBC中的PreparedStatement相比Statement的好处 24. 写一个用jdbc连接并访问oracle数据的程序代码 25、Class.forName的作用?为什么要用? 26、大数据量下的分页解决方法。 27、用 JDBC 查询学生成绩单, 把主要...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询...
23、JDBC中的PreparedStatement相比Statement的好处 120 24. 写一个用jdbc连接并访问oracle数据的程序代码 121 25、Class.forName的作用?为什么要用? 121 26、大数据量下的分页解决方法。 121 27、用 JDBC 查询学生...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
7、char 型变量中能不能存贮一个中文汉字?为什么? ................................................ 10 8、用最有效率的方法算出 2 乘以 8 等於几? ..............................................................