java - Hibernate 期望 NUMBER 在空字段上得到 BINARY

标签 java hibernate

我不明白为什么 Hibernate 试图将此字段设置为空的 VARBINARY。

Java数据类型是BigDecimal Oracle数据类型为Float

设置如下:

entityManager.createNamedQuery("blah").setParameter("target_field", object.sourceValue)

同样 - sourceValue 是一个 BigDecimal,当我调试它时,该值为 null。

当它尝试执行此更新时,出现 oracle 错误:

ORA-00932: inconsistent datatypes: expected NUMBER got BINARY

这是在控制台日志中针对此属性显示的内容:

o.h.type.descriptor.sql.BasicBinder      : binding parameter [8] as [VARBINARY] - [null]

如果我在执行更新之前在 Java 中做了这个愚蠢的 hack:

if (object.sourceValue == null) object.sourceValue = new java.math.BigDecimal(0);

然后它运行正常。所以这个错误的原因肯定不是别的,就是hibernate在字段为null的时候做错了什么。

我该如何解决这个问题,以便我可以将字段设置为 null 而不会被 hibernate 错误处理?

在数据库中,该字段可以为空。

最佳答案

即使使用带有 JPA 的更新版本的 hibernate 5.2.17.Final,看起来问题还没有解决。

null 参数作为 VARBINARY 发送导致错误

ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - ERROR: cannot cast type bytea to bigint

关于java - Hibernate 期望 NUMBER 在空字段上得到 BINARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37336124/

相关文章:

java - 在 Java 中获取 Thymeleaf 模板片段

java - Spring Batch - 当项目具有相互依赖性时如何设置 chunk > 1?

java - JPA 事件监听器不工作

java - java swing 不能在 java 8 update 45 中工作吗?

java - hibernate 查询: Get data for Class from joined tables

java - hibernate 中的关系 1-1 不起作用 : unknown column account0_. date_of_birth

hibernate - Spring:HibernateTransactionManager 处理多个数据源

从键盘读取期间出现 Java NullPointerException

java - 嵌入式Tomcat + Spring文件上传: HTTP 404

java - Glassfish/Hibernate 的 PermGen 空间问题