【发布时间】:2018-05-15 16:09:15
【问题描述】:
我目前正在使用 Spring Data(和 Boot)构建一个 REST API。 我有一个来自 h2database 的 sql Dumb,它由 hibernate 访问。
我的应用程序.yaml:
spring:
profiles: "dev"
datasource:
data: classpath:/data_api.sql
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: create-drop
sql 查询如下:
Insert into TABLE (name, number, date) values ("James", 123, to_date('28-JUL-17','DD-MON-RR'))
Information.java 看起来像:
@Entity
@Table(name="TABLE")
@Data
public class Information {
@Column(name="name")
String name;
@Column(name="number")
Integer number;
@Column(name="date")
String date;
当我尝试运行 API 时,出现以下异常: enter image description here
原因:org.h2.jdbc.JdbcSQLException:函数“TO_DATE”:无效 日期格式:“试图解析 '[Jul, Feb, Apr, Jun, Aug, Mai, Nov, Jan, Dez, Okt, M├ñr, Sep]' 但失败(可能是内部 错误?)。细节: TO_DATE('16-MAR-17', 'DD-MON-RR') ^ , ^
我的猜测是休眠需要一些语言环境,其中月份是用德语配置的 - 有人知道如何更改吗? 另一种方法是告诉 hibernate --> 忽略 sql 函数 to_date() 并将字段读取为字符串。我尝试在 @column 注释上写 @org.hibernate.annotations.Type(type =“text“) 之类的东西 - 但它不起作用:(
编辑: 将导入查询中的 Monthname 更改为 German --> like OCT --> OKT 时; DEC --> DEZ .. 它有效。因此,Hibernate 似乎正在使用我的本地语言设置进行映射。有没有办法把这个改成英文?
【问题讨论】:
标签: sql hibernate spring-data hibernate-mapping spring-jdbc