我使用Hibernate将MySql表映射到实体类。对应用程序进行Sarting操作时,我遇到了这个表\entity映射错误:
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 上一个表由此Accomodation类映射:
@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?
正如您在前两个代码片段中所看到的那样
发布于 2017-12-18 06:15:15
您应该能够将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.BigInteger。
我的建议是检查你的司机的版本。
https://stackoverflow.com/questions/40224832
复制相似问题