我有一個X類的物件,我想通過session.update()來更新它的屬性,同時也有一個X類的物件串列,我想在同一個事務中使用query.executeUpdate()來更新它們的一個屬性。
Caused by: org.hibernate.exception.GenericJDBCException: could not update: [com.net.models.hibernate.OrganizationStructure#1]
在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3241)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3090)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3491)
在org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:145)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:600)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:474)
at org.hibernate.event.internal.AbstractFlushingEventListener.executions(AbstractFlushingEventListener.java:337)
at org.hibernate.event.international.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1437)
... 45 more
原因是:java.sql.SQLException。無效的列型別。16 在oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3963) at oracle.jdbc.driver.OraclePreparedStatement.setNullCritical(OraclePreparedStatement.java:4596) at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:4578) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setNull(OraclePreparedStatementWrapper.java:1285) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setNull(NewProxyPreparedStatement.java:462) 在org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:61) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:39) at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2729) 在org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3168) ... 還有53個
uj5u.com熱心網友回復:
似乎你使用了某種錯誤的方言或配置。這個錯誤表明,Hibernate試圖為JDBC型別代碼null系結一個16,這是為了布爾型,但Oracle不支持。通常情況下,布林值在Oracle上被建模為char(1)或numeric(1)與Hibernate。你可以嘗試通過添加@Type(type = "yes_no")、@Type(type = "true_false")或@Type(type = "numeric_boolean")到布爾屬性中來明確指定型別,但這通常應該是開箱即用,所以請檢查你的配置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/319162.html
標籤:
