为了确保失败,我总是在映射类中使用双引号。这仅适用于PostgreSQL
这是我的课:
@Entity @Table(name="`Person`" ,schema="public" ) public class Person implements java.io.Serializable { private Integer id; private String name; private String address; public Person() { } @Id @GeneratedValue(strategy=IDENTITY) @Column(name="`ID`", nullable=false) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name="`Name`") public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name="`Address`") public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } }
在尝试使用Am获取以下异常时进行插入:
org.postgresql.util.PSQLException: The column name
IDwas not found in this ResultSet.
查询要插入的查询是:
insert into public."Person" ("Address", "Name") values (?, ?)
由于其他原因,我无法删除双引号。
请帮助我解决此问题。
更新:数据库架构:
CREATE TABLE "Person" ( "ID" INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('"Person_ID_seq"'::regclass), "Name" VARCHAR(255), "Address" VARCHAR(255) );
小智.. 5
如果需要引用所有内容,请将以下标志添加到hibernate.properties或persistence.xml文件中
hibernate.globally_quoted_identifiers=true
并从Person类中删除所有单引号。但是,请注意,对于Postgresql,将表/列名称等放在双引号中实际上会将它们变成区分大小写。因此,数据库中表/列的大小写必须与@Table和@Column批注中的相应名称完全匹配。
如果需要引用所有内容,请将以下标志添加到hibernate.properties或persistence.xml文件中
hibernate.globally_quoted_identifiers=true
并从Person类中删除所有单引号。但是,请注意,对于Postgresql,将表/列名称等放在双引号中实际上会将它们变成区分大小写。因此,数据库中表/列的大小写必须与@Table和@Column批注中的相应名称完全匹配。