Caused by: java.sql.SQLException: 无法转换为内部表示解决方法
2013-05-29 19:54
344 查看
Hibernate应用有三种开发方式:
自底向上从数据库到持久化类;
自顶向下从持久化类到数据库表;
从中间出发向上和向下同时发展。
如果从下往上开发,使用Database Explorer反向生成PO,其中的配置文件并不那么智能,比如如下规则
NUMBER(1)~NUMBER(18) 都可以使用 Long 来映射
一般 NUMBER(1)~NUMBER(9) 使用 Integer 映射
NUMBER(10)~NUMBER(18) 使用 Long 来映射
大于 NUMBER(18) 的只能用 BigInteger (出自http://bbs.csdn.net/topics/310225381)
这些规则实际上是不会反映到配置文件中去的
所以会导致数据库里的字段类型与Java里映射该字段属性的类型不能对应转换,出现 java.sql.SQLException
其实深层次的原因就是不同的数据库和程序语言,一样的数据存储方式不同,格式也会大同小异,解决方法就是保持数据库底层和程序语言中数据类型的对应。
一般这种情况下你得检查你的配置文件
java类型与数据库类型是否匹配?(参看oracle数据类型和对应的java类型)
其他POJO是否与当前所查找的属性有关联,有那么在配置文件中会有一对多或多对一的关系,修改为对应的java类型即可
在POJO中属性的数据类型为Long,但是这个属性的getxxx()方法返回的类型却为long,而非Long,程序不会报错,但运行时会出错。(如果对数据库进行操作时,没有涉及到的属性,即使配置文件或者POJO数据类型出错也不会有问题,但一旦涉及,若类型不匹配,则会出现错误)
建议反向工程生成PO时检查数据类型,设置对应格式。
自底向上从数据库到持久化类;
自顶向下从持久化类到数据库表;
从中间出发向上和向下同时发展。
如果从下往上开发,使用Database Explorer反向生成PO,其中的配置文件并不那么智能,比如如下规则
NUMBER(1)~NUMBER(18) 都可以使用 Long 来映射
一般 NUMBER(1)~NUMBER(9) 使用 Integer 映射
NUMBER(10)~NUMBER(18) 使用 Long 来映射
大于 NUMBER(18) 的只能用 BigInteger (出自http://bbs.csdn.net/topics/310225381)
这些规则实际上是不会反映到配置文件中去的
所以会导致数据库里的字段类型与Java里映射该字段属性的类型不能对应转换,出现 java.sql.SQLException
其实深层次的原因就是不同的数据库和程序语言,一样的数据存储方式不同,格式也会大同小异,解决方法就是保持数据库底层和程序语言中数据类型的对应。
一般这种情况下你得检查你的配置文件
java类型与数据库类型是否匹配?(参看oracle数据类型和对应的java类型)
其他POJO是否与当前所查找的属性有关联,有那么在配置文件中会有一对多或多对一的关系,修改为对应的java类型即可
在POJO中属性的数据类型为Long,但是这个属性的getxxx()方法返回的类型却为long,而非Long,程序不会报错,但运行时会出错。(如果对数据库进行操作时,没有涉及到的属性,即使配置文件或者POJO数据类型出错也不会有问题,但一旦涉及,若类型不匹配,则会出现错误)
建议反向工程生成PO时检查数据类型,设置对应格式。
相关文章推荐
- 任何“java.sql.SQLException: 无法转换为内部表示”解决方法
- 出现“java.sql.SQLException: 无法转换为内部表示”解决方法
- 出现“java.sql.SQLException: 无法转换为内部表示”解决方法
- (解决--)Caused by: java.sql.SQLException: 无法转换为内部表示 .
- java.sql.SQLException: 无法转换为内部表示之解决
- (解决)Caused by: java.sql.SQLException: 无法转换为内部表示
- (解决)Caused by: java.sql.SQLException: 无法转换为内部表示
- java.sql.SQLException: 无法转换为内部表示
- Oracle出现“java.sql.SQLException: 无法转换为内部表示”
- java.sql.SQLException: 无法转换为内部表示
- Cause: java.sql.SQLException: 无法转换为内部表示(Mybatis)
- “java.sql.SQLException: 无法转换为内部表示”
- Cause: java.sql.SQLException: 无法转换为内部表示
- java.sql.SQLException: 无法转换为内部表示
- java.sql.SQLException: 查询处理器用尽了内部资源,无法生成查询计划 错误分析解决
- java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date 解决方法
- java.sql.SQLException: ORA-00911: invalid character 解决方法
- 关于 java.sql.SQLException: Bad format for Date错误的解决方法
- java.sql.SQLException: 当事务仍处于活动状态时,无法关闭连接。解决办法
- java.sql.SQLException: ORA-00911: 无效字符 解决方法