无法再将日期设置为null

时间:2014-12-02 15:00:43

标签: java sql oracle hibernate date

我正在尝试使用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>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

从这个问题尝试解决方案: similar question

setParameter有3个参数,其中一个参数是值的类型