gpt4 book ai didi

sql - MyBatis 不返回查询的所有结果

转载 作者:行者123 更新时间:2023-12-04 18:24:22 26 4
gpt4 key购买 nike

问题

我有一个返回 17 条记录的查询。当我将 MyBatis 与具有 <association> 的 map 一起使用时它返回 6 条记录。请注意,这不会发生在我的其他 map 上,我还有许多其他带有关联的 map ,它们都可以正常工作。

查询:

    with leave_counts as 
(
select leave_type_id, count(llm.leave_id) as count
from lw_leave_master llm
group by leave_type_id
)
select llt.leave_type_id, llt.leave_type_abbr_tx,
llt.leave_type_desc_tx, lc.count as count_nm
from lw_leave_type llt
join leave_counts lc on lc.leave_type_id=llt.leave_type_id
order by llt.leave_type_abbr_tx

map :
<resultMap id="typeCountMap" type="mypackage.myclass">
<result property="count" column="count_nm"/>
<association property="type" resultMap="package.myMap"/>
</resultMap>


<resultMap id="myMap" type="mypackage.myclass2">
<result property="id" column="leave_type_id"/>
<result property="abbr" column="leave_type_abbr_tx"/>
<result property="description" column="leave_type_desc_tx"/>
</resultMap>
<association>typeCountMap指 map myMap .

这每次返回 6 条记录。从记录器中获取实际运行的查询并手动运行它会返回 17 条记录。

解决方案?

我可以做两件事让 MyBatis 返回所有 17 条记录

#1

如果我删除 lc.count as count_nm从我的查询中,我返回了所有 17 条记录(只是没有与它们关联的值)
    with leave_counts as 
(
select leave_type_id, count(llm.leave_id) as count
from lw_leave_master llm
group by leave_type_id
)
select llt.leave_type_id, llt.leave_type_abbr_tx,
llt.leave_type_desc_tx
from lw_leave_type llt
join leave_counts lc on lc.leave_type_id=llt.leave_type_id
order by llt.leave_type_abbr_tx

这显然不是一个好的解决方案,但我想包括它,以防它可以帮助您找出我做错了什么。

#2

如果我用其他 map 的内容替换关联,一切都会按预期进行。
<resultMap id="typeCountMap" type="mypackage.myclass1">
<result property="count" column="count_nm"/>
<result property="type.id" column="leave_type_id"/>
<result property="type.abbr" column="leave_type_abbr_tx"/>
<result property="type.description" column="leave_type_desc_tx"/>
</resultMap>

如果我找不到其他解决方案,这显然是我会做的,因为这确实有效。使用 <association> 就好了就像我在其他 map 中一样。

我应该注意到我使用的是 MyBatis 3.1.1

最佳答案

我最近遇到了同样的问题。我相信这个问题与我的主要 resultMap 相关,其中的关联没有 id 列,而我的关联的 resultMap 确实有一个 id 列。我的结果按协会 ID 列分组。

为了纠正这个问题,我在查询中选择了行号,并在我的主 resultMap 中添加了一个 id 指向行号列。

关于sql - MyBatis 不返回查询的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16223094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com