Java JPA正在为我的INT字段创建一个VARCHAR列

Java JPA正在为我的INT字段创建一个VARCHAR列,java,mysql,jpa,Java,Mysql,Jpa,各位, 目前,我正试图根据我的类规范创建一个表,但得到一个错误,即“列'ID'的列说明符不正确”。这是因为我的ID字段是VARCHAR(255)并且具有自动增量,如以下错误中所示: Error executing: CREATE TABLE gameuserstate (ID VARCHAR(255) AUTO_INCREMENT NOT NULL, ADDRESS VARCHAR(255), CITY VARCHAR(255), DOCUMENTID VARCHAR(255), FBUSERI

各位,

目前,我正试图根据我的类规范创建一个表,但得到一个错误,即“列'ID'的列说明符不正确”。这是因为我的ID字段是VARCHAR(255)并且具有自动增量,如以下错误中所示:

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

}

你读过[所有类型的@Generated][1]吗


[1]

如果您不向实体提供序列定义,JPA不会应用自动增量,但会应用序列为新插入的行分配新ID,因此您应该使用
GenerationType.IDENTITY
像这样

 @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

今天我找到了答案


问题是我在account属性中使用了
@PrimaryKeyJoinColumn
注释。删除它使一切按预期进行。

尝试将
Long
作为
id
创建db表,我已经做了,同样的事情也发生了。你的id没有getter和setterfield@lucasfcosta您尝试了一个
Long
Long
作为id类型?为什么您有primaryJoinColumn,列帐户是主键,但不正确?是的,我尝试了,我已经全部尝试了。例如,AUTO可以工作,但是ID字段仍然是VARCHARI。我也尝试过这个方法,同样的事情仍然发生。