在SpringJPA中使用BigInteger作为主键给出-列“id”的列说明符不正确
我想要一个不定式主键,那就是BigInteger.
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-type-conversions.html
BIGINT[(M)] [UNSIGNED] BIGINT [UNSIGNED] java.lang.Long, if UNSIGNED java.math.BigInteger
所以我创建了我的 entity
public class Alarm {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private BigInteger id;
当我创建表时,出现以下错误。
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table alarm (id decimal(19,2) not null auto_increment, frequencyp0p1p2 integer not null, frequencyp3p7p8 integer not null, frequencyp4 integer not null, frequencyp6p5 integer not null, port_description varchar(255), primary key (id)) engine=MyISAM" via JDBC Statement
Caused by: java.sql.SQLSyntaxErrorException: Incorrect column specifier for column 'id'
那么这里出了什么问题呢?
回答
BIGINT与 Java 相同Long,而不是BigInteger.
这个问题甚至引述,所以在使用Long,不BigInteger,它休眠似乎要映射到decimal(19,2),并且该数据类型不能是一个自动生成的值。
更新:正如 dunni 在评论中提到的,您可以强制 Hibernate 使用BIGINT带有@Column注释的数据类型:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "BIGINT")
private BigInteger id;
THE END
二维码