gpt4 book ai didi

java - HSQLDB 意外标记 : GETDATE

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:58 25 4
gpt4 key购买 nike

JPA 和 Hibernate 应用程序使用 HSQLDB 进行 JUnit 测试。

  • HSQLDB 1.8.0
  • hibernate 3.2.4.sp1
  • Java 7

虽然针对 Oracle 数据库的测试运行良好,但由于我们使用的是 MSSQL 2016,因此出现以下错误:

Unexpected token: GETDATE in statement [select ..... effective_date < GETDATE() AND ... ]

所以我明白HSQL使用SYSDATE , CURDATE ,或NOW而不是 MSSQL GETDATE函数,我已经完成了以下操作:

尝试设置sql.syntax_mss通过 URL 和 SQL 语句为 true:

public static final String HYPERSONIC_JDBC_URL = "jdbc:hsqldb:mem:aname;sql.syntax_mss=true";

entityManager.createNativeQuery("set database sql syntax MSS true").executeUpdate();

在方言中注册函数和/或创建函数:

registerFunction("GETDATE", new NoArgSQLFunction("SYSDATE", new DateType()));

entityManager.createNativeQuery("CREATE FUNCTION GETDATE() RETURNS DATE RETURN CURDATE()").executeUpdate();

这些似乎都没有任何效果。

实时应用程序通过 mssql-jdbc-6.2.1.jre7 驱动程序连接到 MS SQL Server 2016。

最佳答案

因此,虽然正如 @fredt 在评论中提到的那样升级库可能是最好的路线,但升级 hsqldb.jar 会破坏 dbunit.jar,升级会破坏 .. 等等。

能够删除 GETDATE 出现并修复序列生成字符串(select next value for seq_name from seq_name 是它喜欢的格式),现在我们回到了工作状态。

升级这些库可以与升级 jBoss、Hiberate、jBPM 和 Quartz 相提并论:)

关于java - HSQLDB 意外标记 : GETDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49679027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com