我正在使用 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)列表 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 不应该将它们插入注释参数中。或者当多行字符串是注释参数时,在编译时删除管道是否足够聪明?
最佳答案
这种行为是 Kotlin 插件中的一个错误;编译器实际上不够聪明,无法删除 |人物。我已提交 an issue .
关于intellij-idea - 注释中如何处理 Kotlin 多行字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954306/