2017-04-14 232 views
0

我试图通过Hibernate hibernate.save(实体)来table.It执行insert语句也给错误:SQL字符串或二进制数据将被截断误差

SQL Error: 8152, SQLState: 22001 
String or binary data would be truncated. 

当我尝试在SQL编辑器执行查询它工作正常,但通过hibernate.save(entity)它给了我上面的错误。可以任何一个请帮我解决这个问题是什么?

+0

什么是您试图插入的列的数据类型? – LONG

回答

0

最后解决的问题,其实在我的实体的属性是:

@Column (name = "myArray") 
private byte[] myArray; 

所以在类型和大小varBinary(255) SQL表创建这是短期container.To通过修复它冬眠实体我补充说:

@Lob 
@Column (name = "myArray") 
private byte[] myArray; 

感谢:What is the significance of @javax.persistence.Lob annotation in JPA?

0

通常这个问题与列的类型和长度有关,检查长度是否足够大或数据类型是否兼容。这可能是一个二进制字符串溢出时填充为int(int32)等

+0

我如何追踪特定列? – NSF

+0

你有权访问目标服务器实例吗?如果是,请转到该服务器实例的“Tables”,找到您尝试插入的表。如果不检查底层表,你就不能使用表实体 – LONG

+0

是的,我有权访问服务器,我知道我试图插入的表名,但是从错误中获得的所有ididnt都是那个表的列名,长度或类型问题。 此外,它以前在postgresql工作正常,但是当我切换到sqlserver相同的查询失败 – NSF

0

我已经有这个问题,当使用错误的SQL方言。举例来说,我使用的是与SQL服务器驱动程序的mysql方言。

再见

+0

我为SQL Server 2012使用以下配置: driver_class:net.sourceforge.jtds.jdbc.Driver 方言:org.hibernate.dialect.SQLServerDialect ..是否正确? – NSF

+0

是的,这是正确的。但是你确定这个配置是在正确的地方吗? jdbc.properties文件中的方言是什么?我不记得确切,但我认为有一些东西与配置的地方(一个为司机,在连接) – Doublequote

相关问题