Spring Mvc Hibernate Encoding/多行导入sql
Posted
技术标签:
【中文标题】Spring Mvc Hibernate Encoding/多行导入sql【英文标题】:Spring Mvc Hibernate Encoding/Multi-line import sql 【发布时间】:2015-10-05 16:10:11 【问题描述】:我正在研究 Spring MVC,
在项目启动时,我已将 database
设置为导入默认 sql
使用休眠配置hibernate.hbm2ddl.import_files
。
import.sql
内的数据用UTF-8
编码。
控制台输出
ERROR: org.hibernate.tool.hbm2ddl.SchemaExport - HHH000388:
Unsuccessful: INSERT INTO menu (id, DATE_CREATED, DATE_DELETED,
DATE_UPDATED, TITLE_ENG, TITLE_GEO, TITLE_RUS, ENABLED, PARENT_ID,
URL, SITE_ID, USER_ID) VALUES
ERROR:
org.hibernate.tool.hbm2ddl.SchemaExport - You have an error in your
SQL syntax; check the manual that corresponds to your mysql server
version for the right syntax to use near '' at line 1
ERROR:
org.hibernate.tool.hbm2ddl.SchemaExport - HHH000388: Unsuccessful: (1,
'2015-09-10 12:00:00', NULL, NULL, 'About Us', N'ჩვენს
შეს�ხებ', 'About Us', b'1', NULL, '/article/view/1', 3,
1).
【问题讨论】:
我不熟悉 import_files,但从输出我的猜测是文件中的 sql 语句跨越两行但 import_files 期望每个 sql 语句只跨越一行导致“插入...值”和“值列表”被视为两个单独的语句。看看这个帖子***.com/questions/673802/…。 【参考方案1】:确保您将 JDBC 驱动程序设置为使用 UTF-8:
jdbc:mysql://dbname?useUnicode=true&characterEncoding=utf-8
在persistence.xml
,设置休眠连接字符集:
<property name="hibernate.connection.charSet" value="UTF-8"/>
如果您的resources/import.sql
文件是多行的,请添加:
<property
name="hibernate.hbm2ddl.import_files_sql_extractor"
value="org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor"
/>
或者对于 Spring Boot,在 application.properties
:
spring.jpa.properties.hibernate.connection.charSet=UTF-8
spring.jpa.properties.hibernate.hbm2ddl.import_files_sql_extractor=org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor
【讨论】:
最佳答案发现问题出在多行和编码上,干得好伙计!以上是关于Spring Mvc Hibernate Encoding/多行导入sql的主要内容,如果未能解决你的问题,请参考以下文章
spring mvc+spring + hibernate 整合
Hibernate - Spring Security - Spring MVC 版本
spring 4 mvc + Hibernate + Annotations 配置堆内存问题
Spring+Spring MVC+Hibernate框架搭建实例