jOOQ с java 15: оба интерфейса org.jooq.Record в org.jooq и класс java.lang.Record в java.lang соответствуют
Я только что попытался обновить свой проект до Java 15 и теперь получаю следующую ошибку:
both interface org.jooq.Record in org.jooq and class java.lang.Record in java.lang match
Есть ли у кого-нибудь опыт решения этой проблемы?
2 ответа
В дополнение к тому, что уже сказал Аникет:
Импорт по запросу больше не работает для
Record
Рекомендуется добавить явный импорт в ваш оператор импорта по запросу:
import org.jooq.*;
import org.jooq.Record;
Или полностью отказаться от импорта по запросу. Например, в Eclipse вы можете использовать функцию "Организовать импорт" для расширения всех ваших операторов импорта по запросу до явного импорта, в зависимости от типов, которые вы фактически используете.
Использование вывода типа
Другой способ предотвратить эту проблему, если это происходит с локальными переменными, - использовать
var
:
var record = ctx.fetchOne(TABLE, TABLE.ID.eq(1));
Теперь вам не нужно импортировать тип. Конечно, это не работает с типами членов, параметрами метода и возвращаемыми типами.
Мы постараемся лучше задокументировать это: https://github.com/jOOQ/jOOQ/issues/10646
В Java 14 появились записи.
java.lang.Record
это суперкласс
record
что противоречит
org.jooq.Record
поскольку каждый тип в
java.lang
автоматически импортируется. Есть два решения:
- Используйте полное имя вместо
Record
и удалите импорт. Например:org.jooq.Record
вместоRecord
. (Не забудьте удалитьimport
заявление). - Повторно объявить
org.jooq.Record
к чему-то конкретному. (Что, я считаю, невозможно в вашем случае, поскольку это сторонняя библиотека.)