Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Hibernate在Java实体类上映射MySql unsigned BigInt的正确数据类型是什么?_Hibernate_Jpa_Orm_Hibernate Mapping - Fatal编程技术网

使用Hibernate在Java实体类上映射MySql unsigned BigInt的正确数据类型是什么?

使用Hibernate在Java实体类上映射MySql unsigned BigInt的正确数据类型是什么?,hibernate,jpa,orm,hibernate-mapping,Hibernate,Jpa,Orm,Hibernate Mapping,我使用Hibernate将MySql表映射到实体类。在应用程序中,我遇到以下表\实体映射错误: 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

我使用Hibernate将MySql表映射到实体类。在应用程序中,我遇到以下表\实体映射错误:

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的下表:

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                                            
上表由该住宿类映射:

@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
    ...........................................................
    ...........................................................
    ...........................................................

}
@实体
@表(name=“住宿”)
公共类住宿实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有整数id;
//私有整数id;
/*@许多酮
私人用户;
*/
@OneToMany(mappedBy=“住宿”)
私人名单室;
私有字符串名称;
私有字符串描述;
私人电话;
私有字符串移动;
私人字符串传真;
私人字符串电子邮件;
私人整数星;
私人双经度;
私人双纬度;
//构造函数、GETTER和SETTER方法
...........................................................
...........................................................
...........................................................
}
因此,读取错误时,我的住宿表的id字段上似乎存在映射错误,映射到住宿类的相关id字段上

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

那么,我要在类上使用什么样的Java数据类型来正确映射这个无符号BigInt


正如您在前面2段代码中所看到的,您应该能够将Mysql类型bigint(20)映射到Java原语long,例如:

@Entity
@Table(name = "accomodation")
public class Accomodation implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;
但是,根据您的要求,您还应该能够使用java.math.biginger


我的建议是检查驱动程序的版本。

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

@Entity
@Table(name = "accomodation")
public class Accomodation implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;
但是,根据您的要求,您还应该能够使用java.math.biginger

我的建议是检查驱动程序的版本