Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠错误column0\uID不存在_Java_Postgresql_Spring Boot_Hibernate - Fatal编程技术网

Java 休眠错误column0\uID不存在

Java 休眠错误column0\uID不存在,java,postgresql,spring-boot,hibernate,Java,Postgresql,Spring Boot,Hibernate,我有一个使用hibernate映射到postgres数据库的模型类。我的模范班是: CheckRes.java package com.example.demo.model; import javax.persistence.Id; import javax.persistence.*; @Entity @Table(name="checkers",schema = "public") public class CheckRes { public

我有一个使用hibernate映射到postgres数据库的模型类。我的模范班是:

CheckRes.java

package com.example.demo.model;
import javax.persistence.Id;
import javax.persistence.*;

@Entity
@Table(name="checkers",schema = "public")
public class CheckRes {
    public long getID() {
        return ID;
    }

    public void setID(long ID) {
        this.ID = ID;
    }

    public String getCheck() {
        return check;
    }

    public CheckRes() {
    }

    public void setCheck(String check) {
        this.check = check;
    }

    @Id
    private long ID;

    public CheckRes(String check) {
        this.check = check;
    }

    @Column(name="check")
    private String check;

}
应用程序属性

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialogue=org.hibernate.dialogue.postgresql9dialogue
spring.jpa.hibernate.ddl-auto=update
数据库中已存在下表,创建脚本为:

CREATE TABLE public."checkers"
(
    "ID" bigint NOT NULL,
    "check" character varying(20),
    CONSTRAINT "checkers_pkey" PRIMARY KEY ("ID")
)

TABLESPACE pg_default;

ALTER TABLE public."checkers"
    OWNER to postgres;
稍后,当我试图从邮递员处调用controller get方法时,我得到以下错误

org.postgresql.util.psqleexception:错误:列checkres0\uu0.id不存在 职位:8


如果该表不存在,则hibernate会自动创建一个带有“\”的表,并且没有错误。但是我不需要hibernate来创建任何表。它只需要在CRUD操作中使用现有的命名约定,我还缺少其他命名约定吗?

一般来说,这是一个很好的实践。根据这一点,您应该将
ID
字段重命名为
ID

然后正如@User-Upvotedon'tsaytanks和@a_horse_(没有名字)所注意到的,您应该使用
@Column

您还应该遵循JavaBean约定。因此,对于上述字段,您应该具有以下getter和setter:

public long getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}

一般来说,这是一个很好的做法。根据这一点,您应该将
ID
字段重命名为
ID

然后正如@User-Upvotedon'tsaytanks和@a_horse_(没有名字)所注意到的,您应该使用
@Column

您还应该遵循JavaBean约定。因此,对于上述字段,您应该具有以下getter和setter:

public long getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}

也可以是引号needed@SternK:但是
“ID”
不同于
ID
(或
ID
)@一匹没有名字的马你说得对!我已经更正了答案。@User-Upvotedon'tsayThanks它有效!我测试过了。实际上,当hibernate发出查询时,它的内容“”也可能是引号needed@SternK:但是
“ID”
不同于
ID
(或
ID
)@一匹没有名字的马你说得对!我已经更正了答案。@User-Upvotedon'tsayThanks它有效!我测试过了。实际上,当hibernate发布query it contents“”时,您应该真正避免使用那些可怕的带引号的标识符。他们的麻烦比他们值得的多得多如果这也能解决你目前的问题,我也不会感到惊讶hand@a_horse_with_no_name:你能提供你的意见作为回答吗?这样我就可以接受了。基本上,将列名从“ID”改为“ID”是可行的,实际上,在创建列时不要使用双引号(
),这样它就变成了区分大小写的用法,比如
ID bigint NOT NULL
,然后默认情况下它变成了
ID
。不过,如果您想使用
“ID”
,那么在JPA中,您应该使用
@列(“\'ID\”)
与引号进行映射,因为hibernate默认不使用引号,所以在查询时它变成了
ID
。您应该真正避免那些可怕的引号标识符。他们的麻烦比他们值得的多得多如果这也能解决你目前的问题,我也不会感到惊讶hand@a_horse_with_no_name:你能提供你的意见作为回答吗?这样我就可以接受了。基本上,将列名从“ID”改为“ID”是可行的,实际上,在创建列时不要使用双引号(
),这样它就变成了区分大小写的用法,比如
ID bigint NOT NULL
,然后默认情况下它变成了
ID
。不过,如果您想使用
“ID”
,那么在JPA中,您应该使用
@列(“\'ID\”)
和引号进行映射,因为hibernate默认情况下不使用引号,所以在查询时它变成了
ID
@Id
@Column(name="`ID`")
private long id;