有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用MultipleLinesSqlCommandExtractor转义单引号

对于Spring Boot项目,我使用导入。sql文件来初始化数据库。 今天,我没有任何问题,它工作正常。 这是原始文件的摘录:

insert into ref_building (code, label, description) values ("METAL", "Métal", "Permet d'extraire");
insert into ref_building (code, label, description) values ("PETROLE", "Pétrole", "Permet d'extraire");

为了提高SQL文件的可读性,我决定在YAML属性中使用MultipleLinessQLComandExtractor,如下所示:

spring:
   jpa :
     properties:
      hibernate:
        connection:
          charSet: UTF-8
        hbm2ddl:
          import_files_sql_extractor: org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor

添加这个之后,Spring Boot出现了一个错误

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "insert into ref_building [...]

经过分析,问题在于单一的引语(“Permet d'extraire”)

因此,我以这种方式避开了单一的引用:

insert into ref_building (code, label, description) values ("METAL", "Métal", "Permet d''extraire");
insert into ref_building (code, label, description) values ("PETROLE", "Pétrole", "Permet d''extraire");

我在启动时没有错误,但在我的数据库中找到了一个值:Permet d''extraire(带两个单引号)

我不明白如何正确地避免这种情况(以及为什么它不特别适用于MultipleNessQLComandExtractor)


共 (0) 个答案