Rom*_*las 1 java oracle triggers ora-04088
首先,让我简要解释一下我的应用程序是如何工作的:
该应用程序处理交易,这些交易作为XML文档存储在我们的数据库(Oracle 11g)中.包含这些信息的表定义如下:
table T_MYDEALS (
DEAL_ID number(9, 0) not null,
DEAL_XML xmltype
)
Run Code Online (Sandbox Code Playgroud)
当我们在此表中更新或插入新项时,我们有一个触发器,它将读取(使用XPath)此XML,并填充其他元数据表.
一切正常,除了在我的机器上.
现在问题
当我在我的机器上运行应用程序时(即Tomcat在我的Eclipse中运行,但连接到Homologation DB),触发器失败并出现以下错误:
WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 1722, SQLState: 42000
ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-01722: invalid number
ORA-06512: at "MY_SCHEMA.AFTER_R_INSERT_MYDEAL", line 628
ORA-04088: error during execution of trigger 'MY_SCHEMA.AFTER_R_INSERT_MYDEAL'
Run Code Online (Sandbox Code Playgroud)
对不起,出于安全考虑,我不能把我的触发器放在这里.请注意,线628位于触发代码的末尾.
我的测试
所以我试着理解为什么这个错误发生在我的机器上(因为它只发生在我的机器上,我的同事都没有遇到这个问题).我不能说它什么时候开始停止工作,也许我最近更换了电脑?
首先,我检查源代码,然后检查我的数据库连接,但一切看起来都是正确的.我还调试了调试模式,看看发送给数据库的XML,或者至少在我们的HibernateXMLType(org.hibernate.usertype.UserType我的XML的转换,用于将我们的XML转换为Oracle可读的数据).但这里既没有发现任何错误.
我省了很多测试,但我最近的一项测试是获得一台新的Tomcat服务器,并部署一个部署在环境中的WAR(例如Homologation).然后,我执行了相同的测试,但触发器仍然失败.
到目前为止,我已经消除了以下嫌犯:
我想知道的是,如果我的Windows XP环境有一些特定的编码配置,它会"转换"XML中的一些数据并制作它们
我的问题
我知道我没有提供很多信息,但如果你能给我一些提示或想法,我将非常感激!
问候.
技术信息: Java 1.6,Oracle 11g,Tomcat 5.5.23,JSF 1.2,Hibernate 3.3