Закрепление BeanNotOfRequiredTypeException на прокси Spring набрало неодноэлементный боб?

Используя ваш подзапрос DerivedTable, вы можете написать:

SELECT coalesce(DerivedTable.vol, 0) AS vol,
       y.year
FROM (VALUES ('2018'::text)) AS y(year)
   LEFT JOIN (SELECT ...) AS DerivedTable
      ON DerivedTable.year = y.year;
26
задан Community 23 May 2017 в 10:31
поделиться

4 ответа

Еще раз, после нескольких часов пытаясь отладить это, я нахожу ответ сразу после публикации на StackOverflow.

Ключевым моментом, который я не упомянул в своем вопросе, является то, что InnerThread имеет транзакционный метод (извините, что это не имеет значения). Это важное различие между OuterThread и InnerThread.

Из документации Spring :

Примечание

Несколько разделов сворачиваются в единую унифицированную программу создания автопрокси-сервера во время выполнения, которая применяет самые сильные настройки прокси, чем любой из разделов (обычно из различные файлы определения компонентов XML). Это также относится к элементам и.

Для ясности: с использованием 'proxy-target-class = "true"' on, иначе элементы заставят использовать прокси CGLIB для всех трех из них.

Добавление приведенной выше строки к моей конфигурации (на основе persistance-context.xml, которую вы можете видеть загруженной выше), похоже, решает проблему. Однако я думаю, что это может быть быстрый обходной путь, а не реальное решение.

Я думаю, что у меня здесь несколько более глубоких проблем, первая из которых заключается в том, что Spring мне кажется такой же запутанной, как и удаление ругательств. Во-вторых, мне, вероятно, следует использовать TaskExecutor Spring для запуска моих потоков. В-третьих, мои потоки должны реализовывать Runnable вместо расширения Thread (см. Вопрос SO ниже).

См. Также

25
ответ дан 28 November 2019 в 06:39
поделиться

Это всего лишь предположение, но попробуйте создать интерфейс InnerThreadInterface, а затем позвольте классу InnerThread расширить его.

После этого вы сможете сделать:

InnerThreadInterface inner = ctx. getBean ("innerThread", InnerThread.class);

2
ответ дан 28 November 2019 в 06:39
поделиться

У меня была эта проблема, хотя я ссылался на CGLIB и использовал настройку proxy-target-class = "true". Я решил, что виноват тег ehcache: annotation ... Удаление следующей конфигурации решило эту проблему. К счастью, я смог использовать кэширование уровня гибернации 2 вместо декларативного кеширования ehcache.

<ehcache:annotations>
    <ehcache:caching id="myCacheModel" cacheName="myCache"/>
    <ehcache:flushing id="myFlushModel" cacheNames="myCache" when="after"/>
</ehcache:annotations> 
1
ответ дан 28 November 2019 в 06:39
поделиться

Другой способ решения этой проблемы - реализовать интерфейс и запросить интерфейс у Spring, прокси-сервер полностью реализует интерфейс, и при приведении не должно возникнуть проблем.

0
ответ дан 28 November 2019 в 06:39
поделиться
Другие вопросы по тегам:

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