Как обрабатываются многострочные строки Kotlin в аннотациях? - PullRequest
0 голосов
/ 23 октября 2018

Я использую Intellij для написания репозитория Kotlin с использованием JPA.Я преобразовал существующий класс Java, который имел особенно длинную строку @Query.

@Query("SELECT a.column1, a.column2, b.column3, b.column4, b.column5, b.column6) FROM TableA as a JOIN TableB as b ON a.id = b.foreignKeyId WHERE a.column1 = :column1 AND b.column2 = :column2 AND b.column3 IN :column3Values")

public List someFancyMethodName (...);

После преобразования в Kotlin я превратил параметр аннотации вмногострочная строка и начал вставлять новые строки.Intellij, (полезно?), Вставил трубы для обработки полей.

В итоге все выглядело так.

@Query("""SELECT a.column1, a.column2, b.column3, b.column4, b.column5, b.column6)
    | FROM TableA as a
    | JOIN TableB as b ON a.id = b.foreignKeyId
    | WHERE a.column1 = :column1
    | AND b.column2 = :column2
    | AND b.column3 IN :column3Values""")
fun someFancyMethodName(...): List<SomeFancyReturnValue>

Моя первая мысль - это не сработает со встроеннымканалы и что Intellij не должен вставлять их в параметр аннотации.Или это достаточно разумно, чтобы удалить каналы при компиляции, когда многострочная строка является параметром аннотации?

1 Ответ

0 голосов
/ 23 октября 2018

Это поведение является ошибкой в ​​плагине Kotlin;компилятор на самом деле не достаточно умен, чтобы удалить |персонажи.Я подал вопрос .

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