过滤器的实体间关联查询问题

假设实体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 个赞

哦,明白你意思了!