简体   繁体   English

ibatis 2.3.x可以延迟加载java.lang.Integer吗?

[英]Does ibatis 2.3.x can lazy load java.lang.Integer?

Trying to lazy load java.land.Integer. 尝试延迟加载java.land.Integer。 Lazy loaded propery: 延迟加载属性:

<result property="foo.cnt" column="id" select="getCnt"/>

Sql statement done like this: 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 statement done like this: 选择语句是这样完成的:

<select id="getCnt" parameterClass="int" resultClass="java.lang.Integer">
    <include refid="sql-getCnt"/>
</select>

Settings: 设置:

<settings 
    enhancementEnabled="true"
    errorTracingEnabled="true"
    lazyLoadingEnabled="true"
    useStatementNamespaces="true"
/>

I expect that lazy loading works. 我希望延迟加载有效。 But that is what i see in logs: Select count statement goes right after first select statement - this means that lazy loading doesn't work. 但这就是我在日志中看到的内容: Select count语句紧接在第一个select语句之后-这意味着延迟加载不起作用。 To ensure nothing reads object fields I force thread sleep for one minute right after querying the object. 为了确保没有任何内容读取对象字段,我在查询对象后立即强制线程休眠一分钟。

How lazy loading for Integer can be done? 如何完成Integer的延迟加载? Can it be done at all? 可以做到吗?

The reason is that the java.lang.Integer class is final so cglib can't create proxy object for it. 原因是java.lang.Integer类是最终类,因此cglib无法为其创建代理对象。 The answer is clear and simple. 答案很简单。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM