在JPQL里能使用session中Map里的值作为参数吗

类似这样 where e.id = :session$idMap[keyName]

1 个赞

请问用的 CUBA 什么版本? 7 以上应该是不支持 session 做参数了:https://github.com/cuba-platform/cuba/issues/2289

是这样吗, 我用的7.2.13, 没有发现不行, 刚回去又测试了一遍, 无论是session$userId还是自己在userSession中加的字面量, 都能在jpql中读取.
对了, 我是用在@JpqlConstraint注解里.

1 个赞

哦,用在JpqlConstraint里面没问题的,那个 issue 是说用在 dataloader 里面不行。

至于你问题里提到的 idMap,这个是什么属性?session 应该是一个 UserSession 对象。

idMap是自定义的一个map, 在程序里手动存进userSession的

1 个赞

这个方式不支持。UserSession 的 attributes 属性是一个 Map<String, Serializable>, 你可以把你的 map 内容都通过 setAttribute() 方法添加到它的 attributes 中。然后就可以用 :session$keyName 直接访问了。

好吧, 谢谢

1 个赞