我遇到了一个奇怪的问题,方法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;
}
}
因此,序列正在增加,但用户未保存,图像:
答案 0 :(得分:0)
USER
是PostgreSQL
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上创建数据库表。 同时检查您创建的序列是否具有相同的名称。