当前位置:  开发笔记 > 编程语言 > 正文

如果使用双引号,则无法使用Hibernate插入行

如何解决《如果使用双引号,则无法使用Hibernate插入行》经验,为你挑选了1个好方法。

为了确保失败,我总是在映射类中使用双引号。这仅适用于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 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)
);

小智.. 5

如果需要引用所有内容,请将以下标志添加到hibernate.properties或persistence.xml文件中

hibernate.globally_quoted_identifiers=true

并从Person类中删除所有单引号。但是,请注意,对于Postgresql,将表/列名称等放在双引号中实际上会将它们变成区分大小写。因此,数据库中表/列的大小写必须与@Table和@Column批注中的相应名称完全匹配。



1> 小智..:

如果需要引用所有内容,请将以下标志添加到hibernate.properties或persistence.xml文件中

hibernate.globally_quoted_identifiers=true

并从Person类中删除所有单引号。但是,请注意,对于Postgresql,将表/列名称等放在双引号中实际上会将它们变成区分大小写。因此,数据库中表/列的大小写必须与@Table和@Column批注中的相应名称完全匹配。

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有