写了一个JSP页面,当用户点击按钮的时候使用AJAX发送请求获取信息,本地上测试N遍后没有问题,上传到服务器后报错404
404路径错误?
首先404错误,第一个想到的就是路径有问题,但是通过观察线上的路径后发现并没有出现问题,前台的请求路径也没有写错
那么是我的java代码出现了问题?
仔细对比服务器与本地的代码,一模一样,struts的配置文件看了一遍又一遍,绝对没有问题
服务器的问题?
这个还真不好判断,检查服务器报错发现这个错误没有被日志文件记录,无奈之下重新部署了一遍服务器,然而问题还是依旧
那么数据库的问题?
在我折腾了两个小时后想尽了各种办法也没有搞定,突然我想到会不会是数据库的问题?之后开始各种网上搜索问题所在,在搜索了N久之后,终于被我找到了原因所在
服务器不支持Nvarchar字段类型!
原因是我查出的字段中有一个字段的字段类型为nvarchar2类型的,服务器不支持报错
解决方法:
将字段类型改为varchar2,完美运行
具体原因还不是很清楚,正常来说服务器应该可以支持oracle的nvarchar2类型的,如果有人知道烦请指点,不胜感激
补:在别的地方看到有可能是项目打war包的时候,配置的Oracle 配置不支持nvarchar2,修改项目的配置为自定义配置类就可以解决
package com.test.util;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.type.StringType;
public class OisHibernateDialect extends Oracle10gDialect
{
public OisHibernateDialect()
{
super();
registerHibernateType(-9, StringType.INSTANCE.getName());
}
}
在配置weblogic的filter - production.properties中修改配置为你自己的类:
hibernate.dialect = com.test.util.OisHibernateDialect
参考:
关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
本地运行项目支持nvarchar类型,上传到weblogic,打开服务器,点开页面就报错