Hibernate无法更新对象:将数据类型varchar转换为数字时出错

问题描述 投票:0回答:2

我收到错误:

将数据类型varchar转换为数字时出错。

当我尝试更新SQL Server(Microsoft)中的对象时。

我可以看到查询看起来像:

update
    TABLE
set
    ORDER_NUMBER=?,
where
    IDENTIFIER=?

我认为IDENTIFIER存在问题。它是主键,但它是varchar,因此在模型类中定义为String。

在我的模型文件中,它看起来像:

@Id
@Column(name = "IDENTIFIER", nullable = false, unique = true, columnDefinition = "VARCHAR(17)")
private String identifier;

我只更新该表,其他应用程序在那里添加记录。

谢谢你的建议。

UPDATE

我可以看到这与Hibernate无关。即使使用SQL控制台,我也无法更新。我收到同样的错误

sql sql-server hibernate
2个回答
0
投票

因为您没有为@Id列指定生成策略,所以它将默认为GenerationType.AUTO - 它使用int,long或short类型。

您的标识符属性是一个字符串,并且转换为其中一种数字类型失败。

一种选择是将标识符属性更改为long,short或int类型。

本文很好地概述了Hibernate的不同标识符。如果您的IDENTIFIER字段特别复杂,您可以使用自定义生成器:http://www.baeldung.com/hibernate-identifiers


0
投票

好的,我知道出了什么问题。在该表上有一个触发Update的附加过程,并且出现了错误

将数据类型varchar转换为数字时出错。

© www.soinside.com 2019 - 2024. All rights reserved.