4

我正在执行我的 Maven 构建,它抛出了这个异常:

Last cause: Wrong column type in x.clients for column type. Found: tinyint, expected: integer

我是这样映射的:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

我正在使用 InnoDB 创建列,如下所示:id int NOT NULL UNIQUE AUTO_INCREMENT

这不应该好吗?为什么说他正在寻找tinyint?

4

6 回答 6

5

我知道这个问题(真的!)老了,但是:

TINYINT 表示 8 位值。它映射到字节/字节。在这两种情况下,它的最小值为 -128,最大值为 127(含)。

SMALLINT 表示 16 位值。它映射到短/短。

INTEGER 表示 32 位值。它映射到 int/Integer。

BIGINT 表示 64 位值。它映射到长/长。

因此,您不能使用 Integer 映射 tinyint;你必须使用一个字节。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

于 2016-06-17T10:48:24.383 回答
3

对基本整数使用@Basic。不过,您总是可以尝试将您的 ID 声明为 Long。我通常总是使用 Long 作为我的 ID。请参阅映射标识符属性

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
于 2012-08-27T23:24:28.760 回答
1

我刚遇到这个问题,分享细节应该很有用。我的情况是:

  • 你定义 @Column (... definition = "integer" )
  • Oracle 将“整数”翻译成十进制(0,-127)(或十进制(0),我还不清楚)
  • 您使用“test.hibernate.hbm2ddl.auto”为“验证”的其他应用程序
  • Hibernate 报告 integer != decimal 并且验证失败

我唯一的解决方案是将 test.hibernate.hbm2ddl.auto 保持为空(未定义 = 未触及数据库)。不确定它是 Oracle 还是 Hibernate 错误(或两者兼而有之)。

于 2015-01-07T22:01:08.197 回答
1

尝试添加类型注释:

@Type(type = "org.hibernate.type.IntegerType")
于 2012-08-27T22:59:36.287 回答
0

将此添加到id字段的注释中:

@Column(columnDefinition = "TINYINT")
于 2012-08-27T21:55:24.870 回答
0
@Column(columnDefinition = "int")
于 2012-08-27T22:15:41.030 回答