Проблема, с которой вы столкнулись, не имеет ничего общего с многострочным String - компилятор ожидает, что значение, переданное атрибуту statement
, является встроенной константой.GString
с интерполированными переменными не удовлетворяет этому ожиданию.Вы увидите точно такую же ошибку компиляции, если напишите одну строку GString
, которая содержит интерполированные значения из Fields
поля класса.
Похоже, вы намеревались получить имя столбца, связанное с Fields.KOMPETENCJA_ID
,Замените его ожидаемым значением, чтобы интерполяция не требовалась.Примерно так:
@Sql(statements = """
INSERT INTO pracownik (kompetencja_id, nr_ewid)
values (1, 'A');
INSERT INTO typ_zadania (id, kod) values (1, 'KOD');
""")
def "should add new qualification"() {
//test code omitted
}
Один интересный факт о Groovy.Двойная кавычка "
обычно используется для обозначения типа GString
.Тем не менее, Groovy-компилятор проверяет, содержит ли строка какие-либо переменные, например ${variableName}
, для выполнения интерполяции.Если он находит, он использует GString
в качестве типа и String
в противном случае.