当我使用pageAs去查询返回A对象时,由于A对象中有嵌套List对象,刚好B对象中有个字段与A对象字段名称相同。这个时候返回的结果框架帮我创建了一个B对象(只有一个字段有值),放入了list集合中。我的预期仅仅是希望返回A对象中能与数据库字段匹配上的值。并不希望框架帮我处理嵌套对象。
框架不会帮我在list集合中创建一个只有一个字段有值的对象。或者增加一种注解,可以过滤掉某些字段。类似@Column(ignore = true)的功能?
建议结合实例描述一下。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
比如上图是需要返回的VO对象。通过pageAs(单表查询订单),查询出分页订单信息。然后后续再通过订单ID去查询员工信息,最后将订单信息跟员工信息组装在一起,返回给前端。目前的问题是框架这边会在pageAs查询返回结果的时候,就往orderEmployeeList集合中放入了一个OrderEmployee对象,只有mchID有值,其他值是空的。如果这个时候通过订单ID未查询到员工信息(没有覆盖orderEmployeeList值),那么返回给前端的就是脏数据了。
最新版本。 SELECT o_sto_order
.* FROM o_sto_order
;
确认没有字段重名
没有哦。我用的是
QueryWrapper query = new QueryWrapper();
query.select(STO_ORDER.ALL_COLUMNS);
所以生成的sql是SELECT o_sto_order.*。
然后我看了下源码,应该是FlexDefaultResultSetHandler中处理nested对象的时候,是拿查询出来的数据去做匹配映射的。刚好查出来的主对象数据中有mchId,就把嵌套对象中的mchId也赋值了
使用STO_ORDER.DEFAULT_COLUMNS也有一样的问题。
SELECT o_sto_order
.id
, o_sto_order
.mch_id
, o_sto_order
.remark
, o_sto_order
.status
, o_sto_order
.cashier
, o_sto_order
.del_flag
, o_sto_order
.order_no
, o_sto_order
.pay_time
, o_sto_order
.store_id
, o_sto_order
.version
, o_sto_order
.cash_time
, o_sto_order
.create_by
, o_sto_order
.member_id
, o_sto_order
.order_tag
, o_sto_order
.read_flag
, o_sto_order
.serial_no
, o_sto_order
.update_by
, o_sto_order
.employees
, o_sto_order
.owner_type
, o_sto_order
.create_time
, o_sto_order
.member_name
, o_sto_order
.order_items
, o_sto_order
.order_price
, o_sto_order
.pay_order_no
, o_sto_order
.update_time
, o_sto_order
.history_flag
, o_sto_order
.member_phone
, o_sto_order
.appointment_id
, o_sto_order
.order_pay_price
, o_sto_order
.settlement_time
, o_sto_order
.order_actual_price
, o_sto_order
.settlement_status
FROM o_sto_order
你这个 select
里面查了一个 mch_id
,但是你实体类里面有两个 mchId
属性,mch_id
的值都赋值进去了。你需要通过别名的方式区分一下这两个 mchId
,参考 @ColumnAlias
的使用。
我明白。我的意思是嵌套对象是list的情况下,如果没有配置一对多关联关系的情况下。是否不应该去给list对象做值映射处理。给list中的对象去赋值,并没有太大的意义,因为值都是一样的。给普通的嵌套对象去赋值还说的过去,毕竟是一对一的。
登录 后才可以发表评论