Попытка ленивой загрузки java.land.Integer. Ленивые загруженные свойства:
<result property="foo.cnt" column="id" select="getCnt"/>
Sql заявление сделано так:
<sql id="sql-getCnt"> SELECT count(*) as cnt FROM bar b INNER JOIN bar2 b2 on b.id = b2.id WHERE bar.id=#id# AND b2.workds IS NULL </sql>
Выберите оператор, сделанный так:
<select id="getCnt" parameterClass="int" resultClass="java.lang.Integer"> <include refid="sql-getCnt"/> </select>
Настройки:
<settings enhancementEnabled="true" errorTracingEnabled="true" lazyLoadingEnabled="true" useStatementNamespaces="true" />
Я ожидаю, что ленивая загрузка работает. Но вот что я вижу в журналах: Оператор select count идет сразу после первого оператора select - это означает, что отложенная загрузка не работает. Чтобы ничто не считывало поля объекта, я заставляю нить спать в течение одной минуты сразу после запроса объекта.
Как можно выполнить отложенную загрузку для Integer? Можно ли это сделать вообще?
Причина в том, что класс java.lang.Integer является окончательным, поэтому cglib не может создать для него прокси-объект. Ответ ясен и прост.