Spring Data JDBC: DataRetrievalFailureException: невозможно преобразовать [oracle.sql.ROWID] в [java.lang.Number]

Хотя верно, что запрос регулярных выражений для синтаксического анализа произвольного HTML похож на прошение начинающему писать операционную систему, иногда бывает целесообразно проанализировать ограниченный , известный набор HTML.

Если у вас есть небольшой набор HTML-страниц, которые вы хотите очистить данные, а затем вложить в базу данных, регулярные выражения могут работать нормально. Например, недавно я хотел получить имена, партии и округа австралийских федеральных представителей, которые я сошел с веб-сайта парламента. Это была ограниченная одноразовая работа.

Regexes отлично справились со мной и были очень быстрыми, чтобы настроить.

0
задан mpssantos 17 January 2019 в 16:10
поделиться

3 ответа

Я думаю, вам нужно объявить поле USR_ID и соответствующую последовательность в вашей сущности

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XXXX")
@SequenceGenerator(sequenceName = "YYYY", allocationSize = 1, name = "XXXX")
Long USR_ID;
0
ответ дан Gagan 17 January 2019 в 16:10
поделиться

К сожалению, Oracle еще не полностью поддерживается. Существует проблема, открытая для создания интеграционных тестов для Oracle , и , сопровождающий PR , уже исправляет некоторые проблемы, но, конечно, не все.

Основная проблема заключается в том, что Oracle делает некоторые интересные вещи, касающиеся генерации сгенерированного ключа. Я вижу следующие опции

a) Не используйте генерацию ключей на стороне базы данных. DATAJDBC-282 делает это более удобным. Но это пока только в релизе SNAPSHOT.

б) Не используйте Oracle. В настоящее время мы проводим тестирование с MySql, Postgres, H2, HSQLDB и MariaDb

c) Посмотрите на PR, упомянутый выше, чтобы посмотреть, сможете ли вы его исправить достаточно для работы.

1110 Я знаю, что эти варианты не очень удовлетворяют. Проблема в том, что для проекта с открытым исходным кодом действительно сложно проводить интеграционные тесты с Oracle, поскольку даже загрузка легального драйвера JDBC Oracle из общедоступной сборки CI - это кошмар, не говоря уже о базе данных.

Коллега прислал мне это изображение, когда мы обсуждали ситуацию:

enter image description here

Но мы не сдаемся, должная поддержка будет добавлено.

0
ответ дан Jens Schauder 17 January 2019 в 16:10
поделиться

У меня возникла та же проблема, в то время как PR включается в следующую версию JDBC Spring Data, мы можем использовать следующий обходной путь с Spring AOP. Это не «идеально», но нам достаточно, пока основная проблема не будет решена: [111 ]

@Around("execution(public * my-app-pacakage.repository.*.save(..))")
public Object aspectController(ProceedingJoinPoint jp) throws Throwable {
    try {
        return jp.proceed();
    } catch (DbActionExecutionException e) {
        if (e.getCause() instanceof DataRetrievalFailureException) {
            return jp.getArgs()[0];
        }
        return e;
    } catch(Throwable e) {
        throw e;        
    }       
}
0
ответ дан Roberto 17 January 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: