session.save()方法的语法错误

时间:2014-10-04 13:09:08

标签: java hibernate postgresql

我遇到了一个奇怪的问题,方法session.save()抛出了语法异常 " org.postgresql.util.PSQLException:错误:语法错误在或附近"用户"" - 查看附图中你可以看到映射表,hibernate查询及其参数,所有看起来都正确,我不知道问题出在哪里。 列id_user具有自动生成的序列,每次尝试调用save()方法时,序列的值都会增加。 用户映射类:

package com.wily.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="user")
@SequenceGenerator(sequenceName="user_id_user_seq", name="userSequence")
public class User {

    @Id
    @Column(name="id_user")
    @GeneratedValue(generator="userSequence")
    private int id;

    @Column(name="username")
    private String username;

    @Column(name="password")
    private String password;

    @Column(name="email")
    private String email;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

}

因此,序列正在增加,但用户未保存,图像: enter image description here

3 个答案:

答案 0 :(得分:0)

USERPostgreSQL reserved word。重命名表

@Table(name="usertable")

答案 1 :(得分:0)

我认为你需要在DB中重新创建表并指定另一个表名。请检查此链接:How to configure Hibernate to put quotes around table names

答案 2 :(得分:0)

如果重命名不起作用请尝试此操作 问题在于数据库。

<property name="hibernate.hbm2ddl.auto">update</property>

这将根据bean类自动在任何db上创建数据库表。 同时检查您创建的序列是否具有相同的名称。