session.save() 方法的语法错误
Posted
技术标签:
【中文标题】session.save() 方法的语法错误【英文标题】:syntax error on session.save() method 【发布时间】:2014-10-04 13:09:07 【问题描述】:我遇到了一个奇怪的问题,方法 session.save() 正在抛出语法异常 “org.postgresql.util.PSQLException:错误:“用户”或附近的语法错误” - 看附图,你可以看到映射表,休眠查询和它的参数,看起来都不错,我不知道问题出在哪里。 列 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;
因此,序列正在增加,但用户未保存,图像:
【问题讨论】:
另见:Hibernate saving User model to Postgres 【参考方案1】:USER
是一个PostgreSQL
reserved word。重命名表格
@Table(name="usertable")
【讨论】:
【参考方案2】:我认为您需要在 DB 中重新创建表并指定其他表名。请查看此链接:How to configure Hibernate to put quotes around table names
【讨论】:
【参考方案3】:如果重命名不起作用,试试这个 问题出在数据库上。
<property name="hibernate.hbm2ddl.auto">update</property>
这将根据 bean 类在任何 db 上自动创建数据库表。 还要检查您创建的序列是否同名。
【讨论】:
以上是关于session.save() 方法的语法错误的主要内容,如果未能解决你的问题,请参考以下文章