jooq getValue (String fieldName) Столбцы с одинаковым именем в разных таблицах

63
5

SQL:

SELECT tblA.hostname, tblB.hostname FROM tblA, tblB ...

При попытке получить имя хоста из каждой таблицы это не сработает. Например,

String clientHostname = (String) result.getValue("tblA.hostname"); 
String serverHostname = (String) result.getValue("tblB.hostname");

Исключение выполнения: [IllegalArgumentException: поле (tblA.hostname) не содержится в строке (имя хоста, имя хоста)]

Затем еще одна попытка исправить проблему:

String clientHostname = (String) result.getValue("hostname"); 
String serverHostname = (String) result.getValue("hostname");

Это не возвращает желаемое поведение, когда clientHostname = tblA.hostname и serverHostname = tblB.hostname, он просто возвращает tblA.hostname для обоих.

Как получить значения для обоих столбцов?

спросил(а) 2021-01-25T15:07:17+03:00 4 месяца, 4 недели назад
1
Решение
63

Помимо явного переименования столбцов, предложенных Эриком, вы можете получить доступ к таким именам столбцов, как это:

String clientHostname = result.getValue(field(name("tblA", "hostname"), String.class)); 
String serverHostname = result.getValue(field(name("tblB", "hostname"), String.class));

Это решение использует:

Более подробную информацию об этом API можно найти в руководстве:

Обратите внимание, что также предлагается запрос функции # 4578, позволяющий использовать API так, как вы планировали.

ответил(а) 2021-01-25T15:07:17+03:00 4 месяца, 4 недели назад
63

Вы пробовали это?

"SELECT tblA.hostname AS tblAhostname, tblB.hostname AS tblBhostname FROM tblA, tblB..."

String clientHostname = (String) result.getValue("tblAhostname"); String serverHostname = (String) result.getValue("tblBhostname");

ответил(а) 2021-01-25T15:07:17+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема