Раскрытие информации: разработчик IntelliJ IDEA здесь.
В настоящее время IntelliJ IDEA предлагает только преобразование полной конкатенации букв в текстовый блок. Здесь, однако, у вас есть конкатенация, включающая переменную tableName
. Это предотвращает запуск проверки. Вы можете обойти это добавление фиктивных скобок:
String sql = "CREATE TABLE " + tableName + (" (\n" +
" id_ UUID DEFAULT random_uuid() PRIMARY KEY ,\n" +
" when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL\n" +
" duration_ STRING NOT NULL\n" +
");");
После этого предлагается преобразование для первого \n
символа:
Результат после удаления скобок выглядит следующим образом:
String sql = "CREATE TABLE " + tableName + """
(
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""";
Я подал выпуск , чтобы предложить преобразование, если только часть сцепления может быть преобразована в текстовый блок .
Альтернативное решение, которое фактически продвигается JDK, - это использовать форматирование строк. Во-первых, используйте намеренное действие «Заменить« + »на« String.format () »(это доступно через Alt + Enter везде внутри конкатенации). Результат выглядит следующим образом:
String sql = String
.format("CREATE TABLE %s (\n id_ UUID DEFAULT random_uuid() PRIMARY KEY ,\n when_ TIMESTAMP WITHOUT TIME " +
"ZONE NOT NULL\n duration_ STRING NOT NULL\n);", tableName);
Теперь сразу предлагается использовать текстовый блок, а результат выглядит следующим образом:
String sql = String.format("""
CREATE TABLE %s (
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""", tableName);
К сожалению, новый метод экземпляра .formatted()
не предлагается (подано другая проблема ), поэтому для его преобразования потребуется ручная работа:
String sql = """
CREATE TABLE %s (
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""".formatted(tableName);