【发布时间】:2016-03-02 14:28:45
【问题描述】:
大家,
目前我正在尝试根据我的类规范创建一个表,我收到一个错误,即“列 'ID' 的列说明符不正确”。这是因为我的 ID 字段是 VARCHAR(255) 并且具有 AUTO_INCREMENT,您可以在以下错误中看到:
Error executing: CREATE TABLE gameuserstate (ID VARCHAR(255) AUTO_INCREMENT NOT NULL, ADDRESS VARCHAR(255), CITY VARCHAR(255), DOCUMENTID VARCHAR(255), FBUSERID VARCHAR(255), IDENTIFIER VARCHAR(255), LASTNAME VARCHAR(255), NAME VARCHAR(255), PASSWORD VARCHAR(255), STATE VARCHAR(255), USERSTATE LONGTEXT, USERID VARCHAR(255), ZIPCODE VARCHAR(255), PRIMARY KEY (ID))
问题是:我班级的ID字段类型是INT! JPA 怎么可能使用 VARCHAR(255) 字段来表示 int?
这是我的实体类:
@Table(name = "gameuserstate")
@Cacheable(false)
@Entity
public class JpaGameUserState {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int id;
@Column
private String userid;
@PrimaryKeyJoinColumn
private JpaAccount account;
@Column
private String fbUserId;
@Column
private String identifier;
@Column
private String password;
@Column
private String name;
@Column
private String lastName;
@Column
private String documentId;
@Column
private String state;
@Column
private String city;
@Column
private String address;
@Column
private String zipcode;
// this will hold old userstate object format
@Lob
@Column
private String userState;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public JpaAccount getAccount() {
return account;
}
public void setAccount(JpaAccount account) {
this.account = account;
}
public String getFbUserId() {
return fbUserId;
}
public void setFbUserId(String fbUserId) {
this.fbUserId = fbUserId;
}
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getDocumentId() {
return documentId;
}
public void setDocumentId(String documentId) {
this.documentId = documentId;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getUserState() {
return userState;
}
public void setUserState(String userState) {
this.userState = userState;
}
}
【问题讨论】:
-
尝试
Long作为id然后尝试创建db表 -
我已经这样做了,同样的事情发生了。
-
你的 id 字段没有 getter 和 setter
-
@lucasfcosta 您尝试使用
Long或long作为id 类型? -
为什么你有primaryJoinColumn那个列账号是主键,不正确