【问题标题】:Spring Boot - Hibernate - Import Date from SQL QuerySpring Boot - Hibernate - 从 SQL 查询导入日期
【发布时间】: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


    【解决方案1】:

    如果其他人遇到这个问题 - 我想通了。 Hibernate 读取定位设置。因此,在主应用程序中使用一个简单的代码行就可以完成:

    Locale.setDefault(new Locale("en", "US"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2018-11-30
      • 2018-10-02
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2017-11-06
      • 2023-03-28
      相关资源
      最近更新 更多