Spring 启动 - 休眠 - 从 SQL 查询导入日期
Spring Boot - Hibernate - Import Date from SQL Query
我目前正在使用 Spring 数据(和引导)构建 REST API。
我有一个来自 h2 数据库的 sql Dumb,休眠可以访问它。
我的Application.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
Caused by: org.h2.jdbc.JdbcSQLException: Function "TO_DATE": Invalid
date format: " Tried to parse one of '[Jul, Feb, Apr, Jun, Aug, Mai,
Nov, Jan, Dez, Okt, Mär, Sep]' but failed (may be an internal
error?). Details:
TO_DATE('16-MAR-17', 'DD-MON-RR')
^ , ^ <-- Parsing failed at this point"; SQL statement
我猜想 hibernate 需要一些语言环境,其中月份是用德语配置的 - 有人知道如何更改吗?
另一种方法是告诉 hibernate --> 忽略 sql 函数 to_date() 并将字段作为字符串读取。我尝试在@column 注释上写@org.hibernate.annotations.Type(type =“text“) - 但它不起作用:(
编辑: 将导入查询中的月份名称更改为德语时 --> 如 OCT --> OKT ; DEC --> DEZ .. 它有效。所以看起来 Hibernate 正在使用我的本地语言设置进行映射。有没有办法将其更改为英语?
如果其他人遇到这个问题 - 我已经解决了。 Hibernate 读取 Locate 设置。因此,在主应用程序中使用简单的代码行即可完成:
Locale.setDefault(new Locale("en", "US"));
我目前正在使用 Spring 数据(和引导)构建 REST API。 我有一个来自 h2 数据库的 sql Dumb,休眠可以访问它。
我的Application.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
Caused by: org.h2.jdbc.JdbcSQLException: Function "TO_DATE": Invalid date format: " Tried to parse one of '[Jul, Feb, Apr, Jun, Aug, Mai, Nov, Jan, Dez, Okt, Mär, Sep]' but failed (may be an internal error?). Details: TO_DATE('16-MAR-17', 'DD-MON-RR') ^ , ^ <-- Parsing failed at this point"; SQL statement
我猜想 hibernate 需要一些语言环境,其中月份是用德语配置的 - 有人知道如何更改吗? 另一种方法是告诉 hibernate --> 忽略 sql 函数 to_date() 并将字段作为字符串读取。我尝试在@column 注释上写@org.hibernate.annotations.Type(type =“text“) - 但它不起作用:(
编辑: 将导入查询中的月份名称更改为德语时 --> 如 OCT --> OKT ; DEC --> DEZ .. 它有效。所以看起来 Hibernate 正在使用我的本地语言设置进行映射。有没有办法将其更改为英语?
如果其他人遇到这个问题 - 我已经解决了。 Hibernate 读取 Locate 设置。因此,在主应用程序中使用简单的代码行即可完成:
Locale.setDefault(new Locale("en", "US"));