Может ли ibatis 2.3.x лениво загрузить java.lang.Integer? - PullRequest
0 голосов
/ 14 сентября 2018

Попытка ленивой загрузки 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? Можно ли это сделать вообще?

1 Ответ

0 голосов
/ 17 сентября 2018

Причина в том, что класс java.lang.Integer является окончательным, поэтому cglib не может создать для него прокси-объект. Ответ ясен и прост.

...