MyBatis - 一对多 - 未为映射列设置值

2024-01-06

我正在使用 MyBatis 访问数据库。 为此,我开设了以下课程:

class ClassA {
    private int id;
    private List<ClassB> list;

    // public getters and setters
}

class ClassB {
    private int id;

    // public getters and setters
}

相应的 DAO 如下所示:

public interface ClassADAO {

  @Select("SELECT id, name, description FROM TableA WHERE id = #{id}")
  @Results(
      @Result(property = "list", javaType = List.class, column = "id",
              many = @Many(select = "ClassBDao.getClassBForClassA")))
  ClassA getClassAById(@Param("id") long id);

}

public interface ClassBDAO {

  @Select("SELECT id, classAId FROM TableB WHERE classAId = #{id}")
  ClassB getClassBForClassA(@Param("id") long id);

}

不幸的是 id 列ClassA未填写正确的 id。 看来这是因为它被用作映射列。

有人已经遇到过这个问题或有解决方案吗?据我所知,即使重命名列也无济于事,因为它仍然是映射列,因此不会设置该值。

我能够在 mybatis 代码中找到它,我认为:org.apache.ibatis.executor.resultset.DefaultResultSetHandler#applyAutomaticMappings()仅对未映射的列应用映射。


我为所有将来可能遇到同样问题的人找到了解决方案。 奇怪的是,您必须指定 id 列作为附加结果(因为它已映射):

public interface ClassADAO { 

  @Select("SELECT id, name, description FROM TableA WHERE id = #{id}") 
  @Results({@Result(property = "id", column = "id"), 
            @Result(property = "list", javaType = List.class, column = "id",
              many = @Many(select = "ClassBDao.getClassBForClassA"))}) 
  ClassA getClassAById(@Param("id") long id);

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis - 一对多 - 未为映射列设置值 的相关文章

随机推荐

  • 是否可以使用 POST 从 URL 直接上传到 S3?

    我知道有一种方法可以使用 POST 直接从 Web 浏览器上传到 S3 而无需将文件发送到后端服务器 但是有没有办法通过 URL 而不是 Web 浏览器来完成此操作 例如 上传位于以下位置的文件http example com dude j
  • Unix sendmail - html 嵌入图像不起作用

    在 SO com 之前的帖子中 我尝试构建脚本来将电子邮件发送到我的 Outlook 帐户 并将图像内嵌在电子邮件正文中 但 html 内容显示在 html 中 而不是显示图像 请帮忙 这是我的片段 echo TO email protec
  • 插入排序的比较次数

    在这个程序中 我想计算插入排序中数据比较的次数 但是我的代码没有按我的预期工作 def insertionSort list numOfComp 0 for i in range 1 len list value list i j i 1
  • 多线程服务器,信号处理。 POSIX

    我在处理多线程服务器中的信号处理时遇到问题 我为每个连接创建一个线程 但我希望有一个选项可以使用 SIGINT 终止服务器 然而 当其中一个线程捕获信号时 事情就会变得很糟糕 有没有办法阻止除主线程之外的线程获取信号 线程从创建它的线程继承
  • Intel AVX:为什么双精度浮点变量没有 256 位版本的点积? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • API 级别 24 中已弃用 ApplicationTestCase

    我创建了一个默认的空项目安卓工作室2 1 2 with API 24 在示例项目中 Google 提供了一个折旧的类应用测试用例 https developer android com reference android test Appl
  • 界面不使用显示模板

    我在显示模板以及处理接口和实现该接口的对象时遇到问题 在示例中 我有许多对象 我想以固定的方式呈现它们 我决定创建一个界面并在视图中引用它 我决定将其放入共享显示模板文件夹中 DisplayFor似乎不适用于传递给它的在视图中实现接口的对象
  • 如何获得本地组中的所有用户(性能良好)

    我寻找解决方案很长一段时间 但我找到的所有解决方案都非常慢 我想获取本地 Windows 组中的所有用户 该组当然也可以包含AD组 因此结果应该包含属于该组本身成员的所有用户and所包含的 AD 组的用户 您知道性能良好的解决方案吗 您尝试
  • 如何在叠加箱线图和条形图时删除重复的图例

    您可以轻松制作的最酷的东西之一seaborn is boxplot stripplot组合 import matplotlib pyplot as plt import seaborn as sns import pandas as pd
  • JDBC UPDATE With preparedStatement 导致 java.sql.SQLException:参数索引超出范围(3 > 参数数量,即 2)[重复]

    这个问题在这里已经有答案了 我面临着java sql SQLException 参数索引超出范围 3 gt 参数数量 即 2 更新一列或两列时 重置信息 表有五列 id mobile tower id reset value date ti
  • 安装 slack 应用程序时如何收到通知?

    我有一个要求 我必须为我的 slack bot 进行一些初步设置 我想做的是 当我的 slack 应用程序安装到工作区时收到通知 向工作区管理员发送包含说明 设置手册的私人消息 我在看松弛event API https api slack
  • OSHI:获取给定路径的 HWDiskStore

    我正在使用奥希https github com oshi oshi https github com oshi oshi来监控硬件 有一个方法 HWDiskStore getDisks https github com oshi oshi
  • 保护内存中的凭据[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我将接收用户名和密码并将其存储在结构中 我该如何防止某人查看我的进程的内存并查看用户的用户名 密码 我的第一个想法是对内存中的用户名和密码进行加密 并
  • 打开弹出窗口,单击链接,在父窗口中打开,关闭弹出窗口?

    我需要帮助 我想要在我的页面上做的是打开一个弹出窗口 我使用它 a class txt button Buy Now a 单击弹出窗口上的链接时 我希望它在主窗口中打开并关闭弹出窗口 我已经尝试了很多方法 但无法让它发挥作用 我想你可以使用
  • Dagger 2 - 为什么这是一个依赖循环?

    我正在尝试注入应用程序的Context到另外 2 个对象中 一个AuthManager and an ApiClient 它们都取决于所述上下文 并且ApiClient取决于AuthManager 为什么这是一个依赖循环 如果Context
  • 通过 Azure DevOps 使用专用终结点部署应用服务

    当我使用专用端点运行 Azure 应用程序服务的发布管道时 会发生以下错误 错误 无法获取 Kudu 应用程序设置 错误 IP 被禁止 代码 403 有什么建议吗 原因是当您向 Web 应用程序添加专用端点时 该应用程序的所有 Intern
  • Rails 3:作用域返回一个数组

    我正在使用范围来获取特定用户的项目 在项目模型中 belongs to user scope for user lambda user where user id gt user 用户模型 has many items Problem 打电
  • if __name__ == '__main__' 函数调用

    我正在尝试解决我在需要构建的一段代码中遇到的问题 我有一个 python 模块 我需要能够导入并传递参数 然后由主模块解析这些参数 我得到的看起来像这样 main py if name main sys argv pass argument
  • ViewModel:未解析的参考

    我想实施ViewModel到我的应用程序中 但我无法导入viewModels or activityViewModels 尝试遵循教程 但它对我来说仍然是未解决的参考 private val userViewModel ProfileFlo
  • MyBatis - 一对多 - 未为映射列设置值

    我正在使用 MyBatis 访问数据库 为此 我开设了以下课程 class ClassA private int id private List