假设实体A上有属性code,实体B上也有属性code,现在的实体A表格的过滤器,我想实现用户通过选择一个实体B,查询A.code=B.code。现在的情况是如果使用custom来设置一个B实体,用户选择后传入查询条件的值是B的ID,而不能是B.code,我想扩展这个地方,可以让B的一个属性作为查询值。
建议官方把custom扩展一下,不要只允许使用一次?来代替实体ID,而是类似property里的{E}来代表完整的实体就可以很容易的实现属性关联!
此问题还有后续吗?有没有官方的解决办法?
这个问题里面的实体 A 和实体 B 实际上没有关联吗?
没有直接关联关系
已经在英文论坛提出,可以关注了解进度:
https://www.cuba-platform.com/discuss/t/filter-custom-condition-with-unrelated-entity/10176
英文帖子里解决了,方案是类似这样的,你可以根据你的情况具体修改,但是注意 join 子句的写法:
<custom caption="device memo ="
join=", forum_Device i"
name="deviceItem"
paramClass="java.lang.String">
{E}.name=i.memo and i.memo = ?
</custom>
解决不了哦,我是希望界面上还是选择一个对象,而在查询的时候不是使用对象的ID而是其他字段去参与查询条件。你发的这个例子,输入条件已经直接变成了字符串了,界面是一个输入框了。
所以我才说你需要根据你的情况修改嘛。我给你改了版:
<custom caption="device memo ="
join=", forum_Device i"
name="deviceItem"
paramClass="com.company.forum.entity.Device">
{E}.name=i.memo and i.id = ?
</custom>
1 个赞
哦,明白你意思了!