【发布时间】:2016-08-04 15:17:17
【问题描述】:
我将 jboss 7 升级到 wildfly 10,但是出现了一个奇怪的错误,我不明白为什么
例外:
原因:java.sql.SQLException: Invalid column index 在 oracle.jdbc.driver.OraclePreparedStatement.setLongInternal(OraclePreparedStatement.java:4901) 在 oracle.jdbc.driver.OraclePreparedStatement.setLong(OraclePreparedStatement.java:4888) 在 oracle.jdbc.driver.OraclePreparedStatementWrapper.setLong(OraclePreparedStatementWrapper.java:206) 在 com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setLong(NewProxyPreparedStatement.java:703) 在 org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:46) 在 org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:73) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:257) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:252) 在 org.hibernate.persister.entity.AbstractEntityPersister.dehydrateId(AbstractEntityPersister.java:2636) 在 org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2604) 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2883)
看起来hibernate正在尝试转换数据类型,因为wildfly正在使用更新版本的hibernate
当我直接在 oracle 上运行时,生成的 sql 可以正常工作:
处理 CreateProvisiningBaseServiceImpl 时出错:org.springframework.orm.hibernate3.HibernateJdbcException:Hibernate 数据访问时的 JDBC 异常:SQL 的 SQLException [插入 NE_NOTIFICATION_INPUT(CREATION_DATE,FILE_NAME,INPUT_TYPE,INPUT_ID)值(?,?,'NotificationInput' , ?)]; SQL 状态 [99999];错误代码 [17003];无法插入:[com.ericsson.enk.ne.db.model.NotificationInput];嵌套异常是 org.hibernate.exception.GenericJDBCException: could not insert: [com.ericsson.enk.ne.db.model.NotificationInput]
还有一些奇怪的东西。当我删除表格时,错误不会改变。但是当我删除序列时,错误会改变并说它找不到序列。
序列的Java代码如下:
@Id @Column(name = "INPUT_ID", nullable = false) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "inputSequence") @SequenceGenerator(name = "inputSequence", sequenceName = "SEQ_INPUT_ID", allocationSize = 1) public long getInputId() { return inputId; }
【问题讨论】:
-
删除了 sql-server 标签
-
向我们展示您的 Java 代码和 SQL 语句
-
为什么您认为引用“无效列索引”的错误消息是数据类型问题?
-
@AlexPoole,因为它在这一行中断了。oracle.jdbc.driver.OraclePreparedStatement.setLongInternal(OraclePreparedStatement.java:4901)
-
@a_horse_with_no_name,由于限制,我无法显示完整的 java 代码,但即使删除表,错误仍然存在。我怀疑序列定义有问题
标签: java oracle hibernate wildfly