当前位置: 首页 > 知识库问答 >
问题:

mybatis在使用注释结果和许多时不在where子句中返回列值

步嘉德
2023-03-14

我使用的是spring boot版本1.3.1中的mybatis并使用注释返回嵌套查询结果,但我不明白为什么在where子句中使用的列值在结果集中都为null,尽管它们在数据库中不是空的。

返回的json

映射器是这样的:

public class TestBean {
    String id;
    String name;
    List<TestSubBean> items;
}

有谁能给点提示吗?

共有1个答案

伏默
2023-03-14

将列=“id”更改为列=“id”。我猜mybatis使用了id_test属性'id'作为参数,而'id'不是id_test的属性

 类似资料:
  • 问题内容: 为什么不能在where子句中使用临时列? 例如,此查询: 这将显示两列,一列称为,另一列称为。是即时创建的,始终为1或0,具体取决于是否有50个或该品牌的产品。 这一切对我来说都是有意义的,除了我不能仅在以下查询中选择时: 这给了我这个错误: 问题答案: 使用来代替: 被评估 前 的。被评估之后。

  • 来自Teradata,我通常会创建一个包含一些变量的易失性表,我会在代码中使用这些变量。 例如。, 然后我会在SELECT WHERE子句中使用该表: 我试图在色调(Impala editor)中执行类似的操作,但遇到了一个错误: AnalysisException:第5行中的语法错误:未定义:来自表名隐藏^遇到:来自预期的:大小写、强制转换、默认值、存在、FALSE、IF、INTERVAL、NO

  • 我需要确定一个实体是否已经被持久化。不幸的是,我没有这个id,但是如果实体的其他六个字段的值与一个持久化的实体相匹配,我可以确定实体已经持久化了。我正在使用Spring JPA存储库,并且知道我可以执行以下操作: 有没有类似的方法:

  • 问题内容: 我有这样的查询: 出现以下错误: 在MySql中,这是有效的,但显然在Postgresql中是无效的。据我所知,原因是查询部分的评估晚于该部分。是否有解决此问题的常用解决方法? 问题答案: 正如您所经历的那样,MySQL的支持是非标准的。正确的方法是重新打印SELECT子句中使用的相同表达式:

  • 问题内容: 我知道在oracle / mysql / sqlserver语句中,您不能在子句中引用列别名,因为它是在之前执行的,但它在sqlite3中有效: 为什么在sqlite中这有可能? 问题答案: 使用启用了标志的sqlite3 : 从上面的指令堆栈可以看出,行的循环(第8-23行)针对表中的每一行对子句中的每个表达式重复执行and命令。 因此,要回答我自己的问题,sqlite引擎能够通过在

  • 问题内容: 我有这个查询: 但是我想做这样的事情: 如何检查电子邮件是否存在?我要使用电子邮件,如果此字段为空,我要使用email2。我该如何完成? 问题答案: 用于选择字段,然后在其后放置该子句: