我试图使用hibernate在oracle中将以前设置的日期字段设置为null,但是一旦将“ nullable”列设置为日期,就无法再次将其设置为null,因为我不知道如何表示空日期在以下查询中作为参数传递。
Query updateQuery;
updateQuery = em.createNativeQuery("UPDATE STATION SET MOD_DT = ?1 WHERE STATION_ID = ?2");
updateQuery.setParameter(2, stationId);
updateQuery.setParameter(1, null);
updateQuery.executeUpdate();
日志:
g! Dec 02, 2014 4:41:46 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 932, SQLState: 42000
<02-Dec-2014 16:41:46 o'clock EET> <Warning> <org.hibernate.engine.jdbc.spi.SqlExceptionHelper> <BEA-000000> <SQL Error: 932, SQLState: 42000>
Dec 02, 2014 4:41:46 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00932: inconsistent datatypes: expected DATE got BINARY
<02-Dec-2014 16:41:46 o'clock EET> <Error> <org.hibernate.engine.jdbc.spi.SqlExceptionHelper> <BEA-000000> <ORA-00932: inconsistent datatypes: expected DATE got BINARY>
最佳答案
Query updateQuery;
updateQuery = em.createNativeQuery("UPDATE STATION SET MOD_DT = null WHERE STATION_ID = ?1");
updateQuery.setParameter(1, stationId);
updateQuery.executeUpdate();
这里的一些信息:https://hibernate.atlassian.net/browse/HHH-9165