我正在尝试使用JPA从Java执行对Oracle DB表的插入操作。
以下是我的代码:
String coCode;
String coDescription;
/* some operations on data ... */
String queryStatement =
"insert into MANAGER_DATA (CO_CODE, CO_DESCRIPTION) values (?1, ?2)";
Query updateQuery = getEntityManager(context).createNativeQuery(queryStatement);
updateQuery.setParameter(1, coCode);
updateQuery.setParameter(2, coDescription.compareTo("") == 0 ? null : coDescription);
updateQuery.executeUpdate();
问题在于,coDescription
在字符串为空的情况下可以为null,在这种情况下,我也希望在表中添加null值(coCode
是主键, coDescription
可为空)。显然,我无法像上面一样将null
值直接传递给setParameter
函数。
如何解决此问题并允许将null值添加到我的数据库表中?
答案 0 :(得分:0)
Oracle evaluates empty strings as null。
例如:
insert into MANAGER_DATA (CO_CODE, CO_DESCRIPTION) values ('my_code', '')
将插入以下行:(“ my_code”,null)。
因此,您可以将其保留为空字符串。
答案 1 :(得分:0)
好像您正在使用受HHH-9165 createNativeQuery's setParameter does not support null错误影响的旧Hibernate版本。升级到Hibernate 5.0.2或更高版本以解决它。按照提到的吉拉:
只需使用Hibernate 5.0.2对其进行测试,该错误似乎就可以解决。