【问题标题】:Spring write Database undependend queriesSpring编写数据库不依赖查询
【发布时间】:2021-07-09 14:25:43
【问题描述】:

我的 Spring 应用程序遇到了一个小问题。

我正在使用这样的存储库:

public interface TripRepository extends CrudRepository<TripEntity, Long>, Serializable {
  @Query("SELECT vt FROM TripEntity vt WHERE vt.opdDate "
      + " = TO_DATE(:operatingDay, 'DD.MM.YYYY') AND vt.lineId IN :lineIds")
  public List<TripEntity> findByDateAndLine(@Param("operatingDay") String operatingDay,
      @Param("lineIds") Collection<Long> lineIds);

我的问题是to_date 函数。在生产中,我正在使用 Oracle,一切都很好。但是为了开发,我想使用 mysql 数据库。

是否有可能编写独立于数据库的查询?或者可能编写两个查询,但使用它们取决于驱动程序。

如果有人能帮我解决这个问题,我会很高兴。

提前致谢

【问题讨论】:

  • 我想你回答了你自己的问题;您为所支持的每种方言编写单独的查询。您也许可以为每种方言编写完全独立的查询,或类似宏的替换来替换某些语法。具体如何处理取决于您的应用程序和编程技能,但这远远超出了 stackoverflow 问题的范围。
  • 数据库中性代码是一个神话。每个 rdbms 产品都有自己独特的 SQL 实现。每个 rdbms 产品都有自己独特的过程语言,位于其独特的 SQL 实现之上。每个 rdbms 产品都有自己独特的内部架构和功能,使一个“最佳设计实践”成为另一个“最差设计实践”。
  • 不能使用free XE edition 进行开发吗?

标签: mysql oracle spring-boot spring-data-jpa mysql-connector


【解决方案1】:

我不确定 jpql 是否定义了 TO_DATE 函数。

我建议您不要将日期作为字符串传递,而是作为 Date 类型传递,让 ORM 选择如何将日期转换为适当的 db 类型。

【讨论】:

  • 感谢您的提示。解决方案是,从查询中删除 to_date 函数
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2019-08-01
  • 1970-01-01
相关资源
最近更新 更多