实体类:
@TableName("t_hosp_ziping_onsite_harmonize")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThospOnsiteHarmonize extends MPJBaseEntity {
//主键id
@TableId
private Long id;
//自评id
private Long zipingId;
//第三部分主表id
private Long onsiteId;
//指标编号
private String indexCode;
//申请人
private String claimantBy;
//创建时间
private Date claimantTime;
//审核人
private String processBy;
//审核时间
private DateTime processTime;
//协调说明
private String harmonizeReason;
//协调状态 1申请 2.同意 3.驳回
private Integer state;
//驳回原因
private String turnDown;
//协助人员
private String harmonizeBy;
@TableField(exist = false)
private String indexName;
//督导
@TableField(exist = false)
private String dudaoCode;
@TableField(exist = false)
private List<ThospOnsiteHarmonizeDetail> details;
@TableField(exist = false)
private List<OperationLog> logs;
}
@TableName("t_hosp_ziping_onsite_harmonize_detail")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ThospOnsiteHarmonizeDetail extends MPJBaseEntity {
//主键id
@TableId
private Long id;
//协调主表id
private Long harmonizeId;
//发起人
private String claimantBy;
//协助人
private String harmonizeBy;
//协助时间
private Date harmonizeTime;
//协助说明
private String reason;
//协助状态 1.协助中 2.已完成 3.无法协助
private Integer state;
//无法协助说明
private String turnDown;
/*
承办人(用于权限控制)
*/
@TableField(exist = false)
private String chengbanCode;
//协调明细
@TableField(exist = false)
private List<OperationLog> logs;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_hosp_ziping_onsite_operation_log")
public class OperationLog extends MPJBaseEntity {
//主键id
@TableId
private Long id;
//自评id
private Long zipingId;
//指标名称
private String indexCode;
//指标类型,第二部分,第三部分
private Integer indexType;
//操作时间
private Date operationTime;
//操作状态
private Integer operationState;
//操作状态描述
private String operationStateStory;
//操作人
private String operator;
//操作说明(驳回说明,协调说明等)
private String operationDetails;
}
```我想要实现一对多查询,使用mybatis-plus-join-boot-starter框架进行连表查询,ThospOnsiteHarmonize有一个字段为List<ThospOnsiteHarmonizeDetail> details;;其中ThospOnsiteHarmonizeDetail有一个字段为List<OperationLog> logs;我想要的结果集为
```java
[Harmonize: Harmonize A
Detail: Detail A1[
{Log: Log A1-2}
],
Detail: Detail A2[
{Log,{
}: Log A2-1},{Log: Log A2-2
}
]
]
业务代码为:
```java
wrapper1.selectAll(ThospOnsiteHarmonize.class)
.selectCollection(ThospOnsiteHarmonizeDetail.class, ThospOnsiteHarmonize::getDetails)
.selectCollection(OperationLog.class, ThospOnsiteHarmonizeDetail::getLogs)
.innerJoin(ThospOnsiteHarmonizeDetail.class, ThospOnsiteHarmonizeDetail::getHarmonizeId, ThospOnsiteHarmonize::getId)
.innerJoin(THospZiPing.class, THospZiPing::getId, ThospOnsiteHarmonize::getZipingId)
.eq(THospZiPing::getState, ZiPingStateEnum.PROCESS.getCode())
.eq(THospZiPing::getZiPingRealm, IndexTypeEnum.THIRD.getInfo())
.innerJoin(OperationLog.class, OperationLog::getId, ThospOnsiteHarmonizeDetail::getId)
.eq(ThospOnsiteHarmonize::getIndexCode, indexCode)
.orderByAsc(ThospOnsiteHarmonize::getIndexCode);
// 执行查询并返回结果
List<ThospOnsiteHarmonize> thospOnsiteHarmonizes = thospOnsiteHarmonizeMapper.selectJoinList(ThospOnsiteHarmonize.class, wrapper1);
使用postman调用方法结果集显示为:
[
Detail: Detail A1,
Log: Log A1-1,
Log: Log A1-2,
Detail: Detail A2,
Log: Log A2-1,
Log: Log A2-2,
]
```为什么log的数据没有被映射到List<OperationLog> logs中,而是和List<ThospOnsiteHarmonizeDetail> details;平级。是业务代码映射哪里写错了吗,找了半天没找到问题。