环境:Tomcat6.0.14+ibatis+Struts2.0+Oracle10g
问题:
ibatis中的resultMap为HashMap所以:result.get("timestamp")返回的是一个oracle.sql.TIMESTAMP但是:(oracle.sql.TIMESTAMP)result.get("timestamp")会出错???!!!更奇怪的是用Tomcat6.0.13则不会出错?!!有哪位高手可以解答一下!!
问题:
ibatis中的resultMap为HashMap所以:result.get("timestamp")返回的是一个oracle.sql.TIMESTAMP但是:(oracle.sql.TIMESTAMP)result.get("timestamp")会出错???!!!更奇怪的是用Tomcat6.0.13则不会出错?!!有哪位高手可以解答一下!!
ibatis将TIMESTAMP字段封装到HashMap(result)里
如果我们:
(oracle.sql.TIMESTAMP)result.get("TIMESTAMP");
的话会报错,原因在于:
result.get("TIMESTAMP")(它的类型时oracle.sql.TIMESTAMP)的ClassLoader
和oracle.sql.TIMESTAMP的ClassLoader不同,所以不能进行类型转换,
估计是class12.jar放的位置不同。
在项目工程的lib中加入和在Tomcat的lib中加入,还是不行!!
在MyEclipse的Appentd to ClassPath中加入,却可以!!!
问题又来了,这种加入Java包的方法只能在MyEclipse上启动Tomcat才可以运行,
如果独立启动Tomcat的话,仍然会出现上面的问题,
请稳哪位高手可以告诉一下怎么在Tomcat的配置文件中将class12.jar加入到classpath中!??
所以没有出现问题!!
用java.util.Date
用oracle.sql.TIMESTAMP是为了做排他!
即使java.util.Date的精度够,也应该会出现类型不能转换的问题(也就是存入到数据库的是Date,检索出来被
ibatis封装到HashMap(result)中,再(java.util.Date)result.get("Date"))同样会报错!!
之前也试过oracle.sql.blob不能进行转换的问题
不能做一个ResultMap吗?
如果自定义resultMap,这个映射过程中加载TimeStamp类的classloader也应该和映射到Map时的一样的
原来在struts2的Filter初始化的时候做了一次数据库查询,所以那时候
Tomcat加载的是Tomcat的lib目录下的class12.jar,而在我们的web工程
运行的过程中加载java.sql.Timestamp的是在web工程中的lib目录下的
class12.jar,所以会造成他们的classLoader不同!!所以在发布到Tomcat
后,只要把工程中的lib目录下的class12.jar删掉就行了!!