首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hibernate在Java类上映射MySql无符号BigInt的正确数据类型是什么?

使用Hibernate在Java类上映射MySql无符号BigInt的正确数据类型是什么?
EN

Stack Overflow用户
提问于 2016-10-24 18:12:57
回答 1查看 2.5K关注 0票数 1

我使用Hibernate将MySql表映射到实体类。对应用程序进行Sarting操作时,我遇到了这个表\entity映射错误:

代码语言:javascript
复制
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [id] in table [accomodation]; found [bigint (Types#BIGINT)], but expecting [decimal(19,2) (Types#NUMERIC)]  

所以我有下表,名为acccomodation

代码语言:javascript
复制
Field                                                            Type       Null Key Default    Extra                      
---------------------------------------------------------------------------------------------------------------------------
id                                                               bigint(20) unsigned NO   PRI            auto_increment             
user_id                                                          bigint(20) unsigned NO   MUL                                       
accomodation_name                                                varchar(255) NO                                             
description                                                      text       NO                                             
nation                                                           varchar(255) NO                                             
region                                                           varchar(255) NO                                             
province                                                         varchar(255) NO                                             
city                                                             varchar(255) NO                                             
geographical_position                                            point      NO                                             
stars                                                            int(10)    NO                                             
accomodation_typological_id                                      bigint(20) unsigned YES                                            
accomodation_service_id                                          bigint(20) unsigned YES                                            
tell                                                             varchar(255) YES                                            
mobile                                                           varchar(255) YES                                            
fax                                                              varchar(255) YES                                            
email                                                            varchar(255) YES                                            
time_stamp                                                       datetime   YES                                            

上一个表由此Accomodation类映射:

代码语言:javascript
复制
@Entity
@Table(name = "accomodation")
public class Accomodation implements Serializable {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private BigInteger id;
    //private Integer id;

    /*@ManyToOne
    private Users users;
    */

    @OneToMany(mappedBy = "accomodation")
    private List<Room> rooms;

    private String name;
    private String description;
    private String phone;
    private String mobile;
    private String fax;
    private String email;
    private Integer stars;
    private Double longitude;
    private Double latitude;

    // CONSTRUCTOR AND GETTER AND SETTER METHODS
    ...........................................................
    ...........................................................
    ...........................................................

}

因此,读取该错误时,我的Accomodation类的相关id字段上映射的容纳表的id字段上似乎存在映射错误。

问题似乎是,在映射的类上使用BigInteger作为id字段的类型,我必须在表的id字段上使用。但我认为这并不好,因为表的主键应该是DB上的无符号BigInt。

那么,我要在类中使用什么Java数据类型来正确映射这个未签名的BigInt?

正如您在前两个代码片段中所看到的那样

EN

回答 1

Stack Overflow用户

发布于 2017-12-18 06:15:15

您应该能够将Mysql类型bigint(20)映射到Java原语long,例如:

代码语言:javascript
复制
@Entity
@Table(name = "accomodation")
public class Accomodation implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;

但是,根据这份文件,您也应该能够使用java.math.BigInteger。

我的建议是检查你的司机的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40224832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档