jointable - 在 CrudRepository(Spring data jdbc) 上使用 @query 和表连接
问题描述
我正在尝试使用 @query 的 spring data jdbc,但遇到了一个问题:如果我有一个查询连接 2 个这样的表:
@Query("select a.*, b.* from master a, detail b where b.master_id=a.id and a.id=:id")
我如何得到回应?官方的Spring Data JDBC、References 和 Aggregates没有给出任何提示。有什么建议吗?
解决方案
您有多种选择:
使用默认值RowMapper
使用具有您选择的所有字段的属性的类(或该类的集合)作为返回类型。这将为每一行返回一个元素。
由于您指的是这两个表,master
并且detail
在这种情况下您可能不希望这样。
使用自定义RowMapper
@Query
注释允许您指定您自己的rowMapperClass
将被实例化并NamedParameterJdbcTemplate
与您的查询一起传递给 a的注释。
同样,这将导致每行选择一个结果元素,因此可能不是您想要的。
使用自定义ResultSetExtractor
这可以在@Query
注释中再次指定。并允许您以任意方式构造结果。有关更多详细信息,请参阅文档ResultSetExtractor
。
备注:如果您使用 a从查询结果的多行中ResultSetExtractor
创建Master
具有多个Detail
实例的单个实例,请确保添加ORDER BY master.id
. 否则,行的顺序可能是所需的,但实际上并不能保证。
推荐阅读
- html - 选择选项字体大小不变
- sql - 获取给定月份和年份的所有日期并加入同一个表 sql
- pascal - 没有余数的帕斯卡除法
- python - 如何在python中找到一个进程使用的核心数?
- laravel - Laravel JOIN DB Raw 返回 hasMany Relathsionship
- powerbi - Dax SummarizeColumns with Filter On DateTime Field 不起作用
- ruby-on-rails - 导轨中的液滴类
- amazon-web-services - Amazon RDS 卡在重新启动状态
- json - 将 JSON 数据放入 yml 文件中
- python - 为什么在使用 model_from_yaml 打开 Keras yaml 模型时出现构造函数错误?