【问题标题】:Using sql functions that require options with @Formula annotation in Java Spring在 Java Spring 中使用需要带有 @Formula 注释的选项的 sql 函数
【发布时间】:2019-05-14 14:19:03
【问题描述】:

我正在尝试在 Java 实体中使用 SQL 的 DATEDIFF 方法,而 Java 将 DATEDIFF 的 DAY 选项解释为模型内部的属性,而不是所述函数的选项

我找到了很多关于在 Spring 中使用@Formula 注解的文章,但是我还没有找到将 SQL 变量作为参数的文章。

private String fecInaguracion;
private String fecFirmaContrato;
@Formula(value="DATEDIFF(DAY, fecFirmaContrato, getdate())")
private Integer diasTranscurridos;

如上所述使用 DAY,Spring 将“DAY”解释为模型内部的一个属性。知道这一点后,我尝试将选项作为模型内部的属性提供并将其作为参数传递。 也没有运气。

private String fecInaguracion;
private String fecFirmaContrato;
private String option = "DAY"; 
@Formula(value="DATEDIFF(option, fecFirmaContrato, getdate())")
private Integer diasTranscurridos;

最后一次尝试是在字符串中连接选项,也导致了错误。

private String fecInaguracion;
private String fecFirmaContrato;
@Formula(value="DATEDIFF("+DAY+", fecFirmaContrato, getdate())")
private Integer diasTranscurridos;

【问题讨论】:

    标签: java sql-server spring


    【解决方案1】:

    经过试验,我找到了一种使它起作用的方法,在 SQL 中,我注意到您可以将选项用双引号括起来,并且该选项的工作方式相同。 知道了这一点,我再次开始试验,发现在模型中转义双引号字符有效,现在一切正常。

    private String fecInaguracion;
    private String fecFirmaContrato;
    @Formula(value="DATEDIFF(\"DAY\", fecFirmaContrato, getdate())")
    private Integer diasTranscurridos;
    

    希望有一天这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2018-05-14
      • 2012-05-07
      相关资源
      最近更新 更多