Dil*_*mar 2 java postgresql hibernate
为了确保失败,我总是在映射类中使用双引号。这仅适用于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;
}
}
Run Code Online (Sandbox Code Playgroud)
在尝试使用Am获取以下异常时进行插入:
org.postgresql.util.PSQLException: The column nameIDwas 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)
);
Run Code Online (Sandbox Code Playgroud)
小智 5
如果需要引用所有内容,请将以下标志添加到hibernate.properties或persistence.xml文件中
hibernate.globally_quoted_identifiers=true
Run Code Online (Sandbox Code Playgroud)
并从Person类中删除所有单引号。但是,请注意,对于Postgresql,将表/列名称等放在双引号中实际上会将它们变成区分大小写。因此,数据库中表/列的大小写必须与@Table和@Column批注中的相应名称完全匹配。
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |