我正在执行我的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?
答案 0 :(得分:2)
使用@Basic表示基本整数。您可以随时尝试将您的ID声明为Long。我通常总是使用Long来获取我的ID。见Mapping Identifier Properities:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
答案 1 :(得分:2)
我知道这个问题(真的!)老了,但是:
TINYINT表示8位值。它映射到byte / Byte。在这两种情况下,它的最小值为-128,最大值为127(包括)。
SMALLINT表示16位值。它映射到短/短。
INTEGER表示32位值。它映射到int / Integer。
BIGINT表示64位值。它映射到long / Long。
因此,您无法使用Integer映射tinyint;你必须使用字节。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
答案 2 :(得分:1)
我刚遇到这个问题,分享细节应该会很有用。我的情况是:
我唯一的解决方案是保持test.hibernate.hbm2ddl.auto为空(undefined =未触及数据库)。不确定它是Oracle还是Hibernate错误(或两者兼而有之)。
答案 3 :(得分:0)
将其添加到id
字段的注释中:
@Column(columnDefinition = "TINYINT")
答案 4 :(得分:0)
@Column(columnDefinition = "int")
答案 5 :(得分:0)
尝试添加类型注释:
@Type(type = "org.hibernate.type.IntegerType")