【问题标题】:How are Kotlin multiline strings handled in annotations?注释中如何处理 Kotlin 多行字符串?
【发布时间】:2018-10-23 17:01:08
【问题描述】:

我正在使用 Intellij 使用 JPA 编写 Kotlin 存储库。我转换了一个现有的 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 后,我将 annotation 参数转换为多行字符串并开始插入换行符。 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 不应该将它们插入注释参数中。或者当多行字符串是注释参数时,是否足够聪明地在编译时删除管道?

【问题讨论】:

    标签: intellij-idea kotlin


    【解决方案1】:

    此行为是 Kotlin 插件中的错误;编译器实际上不够聪明,无法删除 |人物。我已经提交了an issue

    【讨论】:

    • 谢谢@yole。这正是我所期望的。
    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多