在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;


以上是在SpringJPA中使用BigInteger作为主键给出-列“id”的列说明符不正确的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>