Java 使用Spring数据JDBC时未找到JdbcSQLSyntaxErrorException列

Java 使用Spring数据JDBC时未找到JdbcSQLSyntaxErrorException列,java,spring-boot,spring-data-jdbc,Java,Spring Boot,Spring Data Jdbc,我正在阅读Spring数据JDBC文档并做实验。在这样做的同时,我试图在其父类中使用@MappedCollection注释建立简单的一对多关系,并得到一个错误,即“未找到列”。然而,我看到列是在数据库中创建的 以下是我的实体类: public class Customer { @Id @Column("customer_id") private Long id; private String name; private int a

我正在阅读Spring数据JDBC文档并做实验。在这样做的同时,我试图在其父类中使用@MappedCollection注释建立简单的一对多关系,并得到一个错误,即“未找到列”。然而,我看到列是在数据库中创建的

以下是我的实体类:

public class Customer {
    @Id
    @Column("customer_id")
    private  Long id;
    private  String name;
    private  int age;

    @MappedCollection(idColumn = "customer_id")
    private Set<Address> addresses = new HashSet<>();

    public Customer() {
    }

    public Customer(Long id, String name, int age, Set<Address> addresses) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.addresses = addresses;
    }

    public Customer withId(Long id){
        return new Customer(id, this.name, this.age, this.addresses);
    }
   // Getters, equals and hashcodes methods below

}
Sql脚本文件:

CREATE TABLE IF NOT EXISTS Customer (
    customer_id INTEGER IDENTITY PRIMARY KEY,
    name VARCHAR(100),
    age INTEGER not null
    );


CREATE TABLE  IF NOT EXISTS Address (
    customer_id INTEGER,
    city VARCHAR(100)
);

ALTER TABLE Address ADD CONSTRAINT FK_ADDRESS_CUSTOMER 
FOREIGN KEY (customer_id) REFERENCES Customer (customer_id)
现在,当我尝试用一组地址保存客户时。我正在犯错误

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "customer_id" not found; SQL statement:
INSERT INTO "ADDRESS" ("CITY", "customer_id") VALUES (?, ?) [42122-200]
错误表示在表中找不到客户id,但我看到它已经存在。有人能给我解释一下原因吗? 我正在使用h2数据库


源代码可以在my中找到。通过运行测试可以重现错误CustomerRepositoryTest-->aggregationTest

当您引用名称时,它们会区分大小写,例如
客户id
客户id
不是相同的名称

这是因为H2通过大写不带引号的名称处理大小写不敏感,所以
客户id
客户id
客户id
客户id
都是相同的1,但是
客户id
客户id
是两个完全不同的名称

修正插入不引用名称,或拼写大写名称。不引用是推荐的方式


1) 就H2而言。其他数据库的处理方式不同,例如PostgreSQL将名称小写。

谢谢!!将@MappedCollection(idColumn=“customer\u id”)替换为@MappedCollection(idColumn=“customer\u id”)已生效。您是否对Hibernate使用任何报价配置?比如
hibernate.globally\u-quoted\u-identifiers
我没有具体使用hibernate或spring-data-jpa。它的spring数据是jdbc。无论如何,这个问题与我在mappeCollection中指定列名的方式有关。列名至少应为大写,用于H2
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "customer_id" not found; SQL statement:
INSERT INTO "ADDRESS" ("CITY", "customer_id") VALUES (?, ?) [42122-200]