【问题标题】:Difference in HSQL and MySQLHSQL和MySQL的区别
【发布时间】:2016-07-01 08:11:13
【问题描述】:

我使用 MySQL 作为我的应用程序数据库,但使用 HSQL 作为测试内存数据库。现在的问题是我有一个 SQL selectQuery,如下所示:

SELECT date(a.created_at) as record_date 
FROM table a

现在,date() 是 MYSQL 中用于将 DateTime 转换为 Date 的函数,但在 HSQL 中,相同的函数是 to_date()。现在,我有一个方法可以将上述查询命中数据库并获取输出。

public Response dbQueryThroughJdbcTemplate(String selectQuery){
       jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response  
    }

现在,我有一个测试方法来测试这个方法,

@Test
public void testDbQueryThroughJdbcTemplate(){
       Response response = dbQueryThroughJdbcTemplate(selectQuery);
       TestCase.assertEquals(expected, response); // avoided the code for making expected object
}

现在,由于测试环境使用的是HSQL db,测试会抛出date方法不可用的错误。

如何解决这个问题,或者有什么更好的方法来解决这个问题?

【问题讨论】:

  • 测试什么? HSQL 工作,你不需要测试它。测试你得到正确的结果,这与所使用的查询机制无关。如果问题是您需要完全更改查询:您不应该这样做。要么使用 MySQL,要么模拟数据库调用。
  • @Gimby,更新了问题以使其更清晰
  • 正如我所说,您正在测试错误的东西。 MySQL 的 date 函数和 HSQL 的 date 函数可以工作,你不需要测试。您应该测试的是您的应用程序如何响应查询的结果,这允许您通过模拟数据库将其从测试中移除。

标签: java mysql hsqldb jdbctemplate


【解决方案1】:

您可以尝试 HSQLDB 和 MySQL 都支持的替代方法

SELECT CAST(a.created_at AS DATE) as record_date FROM table a

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2012-06-25
    • 2010-10-19
    • 2019-04-11
    • 2015-08-08
    相关资源
    最近更新 更多