Использование функций sql, для которых требуются параметры с аннотацией @Formula в Java Spring - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь использовать метод SQL DATEDIFF в объекте Java, и Java интерпретирует параметр DAY для DATEDIFF как свойство внутри модели, а не параметр указанной функции

Я обнаружилмного статей об использовании аннотации @Formula в Spring, но мне еще предстоит найти такую, которая принимает переменную 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;

1 Ответ

0 голосов
/ 15 мая 2019

После экспериментов я нашел способ заставить это работать, в SQL я заметил, что вы можете заключить опцию в двойные кавычки, и эта опция работает так же. Зная это, я снова начал экспериментировать и обнаружил, что экранирование символов двойной кавычки в модели работает, и теперь все в порядке.

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

Надеюсь, это когда-нибудь кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...