我正在尝试使用hibernate在oracle中将先前设置的日期字段设置为null但是一旦将“可空”列设置为日期,我就不能再将其设置为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>
答案 0 :(得分:1)
Query updateQuery;
updateQuery = em.createNativeQuery("UPDATE STATION SET MOD_DT = null WHERE STATION_ID = ?1");
updateQuery.setParameter(1, stationId);
updateQuery.executeUpdate();
答案 1 :(得分:0)
从这个问题尝试解决方案: similar question
setParameter有3个参数,其中一个参数是值的类型