【关联字段如何在列表中显示】查询车间列表页面中,显示关联的公司(company)字段
车间列表显示的隶属公司字段是company_id,该字段是公司表中的主键。
如何修改,让它显示公司表中的 company_name,而不是显示company_id。
这个功能,需要作两表的关联查询,查询出的company_name放在json数组中,返回到前端显示。
前端页面改造
<el-table-column label="隶属公司" align="center" prop="companyId" />
修改为-->
<el-table-column label="隶属公司" align="center" prop="companyName" />
实体类改造(添加字段)
/** 隶属公司 */
@Excel(name = "隶属公司的名称")
private Long companyName;
public Long getCompanyName() {
return companyName;
}
public void setCompanyName(Long companyName) {
this.companyName = companyName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("workshopId", getWorkshopId())
.append("workshopName", getWorkshopName())
.append("workshopDesc", getWorkshopDesc())
.append("companyId", getCompanyId())
.append("companyName", getCompanyName())
.append("backgroundImg", getBackgroundImg())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
SQL语句改造(添加Join查询)
resultMap 中增加 property=“companyName”
<resultMap type="DigWorkshop" id="DigWorkshopResult">
---略---
<result property="companyId" column="company_id" />
<result property="companyName" column="company_name" />
---略---
</resultMap>
Select公共字段改造(添加company_name列)
SELECT
a.workshop_id,
a.workshop_name,
a.workshop_desc,
a.company_id,
b.company_name,
a.background_img,
a. STATUS,
a.del_flag,
a.create_by,
a.create_time,
a.update_by,
a.update_time
FROM
dig_workshop a
LEFT JOIN dig_company b ON a.company_id = b.company_id
BUG
测试部署
看一下后台报错信息:
(无法确定返回值类型)
org.springframework.dao.DataIntegrityViolationException:
Error attempting to get column 'company_name' from result set.
Cause:
java.sql.SQLDataException:
Cannot determine value type from string '江苏联康信息股份有限公司'
虽然它的报错信息,是在service的实现类里,但是我跟进去看了一下,发现写的代码没什么问题。
值无法匹配
我想了想:Error attempting to get column ‘company_name’ from result set. 尝试从result set中获取company_name失败。
是不是这个字段和我实体类里的属性无法匹配?
我去实体类里一看,果然发现了问题的阿症结所在
我居然把companyName的类型写错了,我写成了Long类型,但是它返回的数据是String类型,当然无法匹配了。
将companyName类型修改为 String类型。
修复BUG,再次测试部署
再次测试部署,成功显示