栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PostgreSQL / JPA-在import.sql文件中导入函数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PostgreSQL / JPA-在import.sql文件中导入函数?

hibernate的默认SqlStatementParser实现的问题,该实现在多行sql命令提取器中使用。

如果查看语法定义

hibernate-core/src/main/antlr/sql-stmt.g
,则有语句结尾的定义:

STMT_END    : ';' ( 't' | ' ' | 'r' | 'n' )*    ;NOT_STMT_END    : ~( ';' )    ;

这表明语句结尾是分号符号,后跟“空格”,“制表符”,“回车符”或“换行”符号。

因此:在Hibernate中的默认实施不支持美元报价。

如果您不想实现自定义的hibernate解析器,则可以使用简单的

'
引用重写所有函数而无需使用美元引用。但是您将需要小心逃脱
'
字符。

更新:您可以创建自定义

importSqlCommandExtractor
。例如:使用以下命令分隔命令
--******
(在注释中使用6个星号,只是为了使您的文件成为正确的SQL文件,而在注释中使用自定义命令分隔,或者选择您喜欢的任何疯狂组合),然后在简单实现中将它们分开

public class importSqlCE implements importSqlCommandExtractor {    private static final Logger log = LoggerFactory.getLogger(importSqlCE.class);    @Override    public String[] extractCommands(Reader reader) {        try { String allCommands = IOUtils.toString(reader); return allCommands.split("--******");        } catch (IOException e) { log.error("error reading import commands", e); log.info("sengind default empty command set"); return new String[0];        }    }}

然后配置hibernate以使用它

<property name="hibernate.hbm2ddl.import_files_sql_extractor"value="example.importSqlCE" />

有了这个,您的import.sql将支持美元报价(即它将简单地忽略任何SQL对正在发生的事情的了解。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号