我目前正在尝试使用条件api创建一个非常复杂的查询设置,并且达到一个起点,我开始认为使用条件API可能无法做到这一点。
我们有一个引用属性映射表的实体。
client
____________
|id|...|...|
|--|---|---|
|__|___|___|
client-attributes
_____________________
|clientid|name|value|
|--------|----|-----|
|________|____|_____|
client-attributes表在实体中映射为一个集合表:
@ElementCollection
@MapKeyColumn(name="NAME")
@Column(name="VALUE", length = 4000)
@CollectionTable(name="CLIENT_ATTRIBUTES", joinColumns={ @JoinColumn(name="CLIENT_ID") })
protected Map<String, String> attributes = new HashMap<String, String>();
该代码不是我们自己的,我们只需要使用它即可,并且我们无法对此做任何更改...
现在,我想构建一个类似于以下的查询,该查询可能会在
之后增加一些左联接SELECT *
from (SELECT *
from keycloak.USER_ENTITY U
LEFT JOIN (SELECT * from keycloak.USER_ATTRIBUTE attr where attr.NAME = 'attribute1')
as attribute1 on attribute1.USER_ID = U.ID
LEFT JOIN (SELECT * from keycloak.USER_ATTRIBUTE attr where attr.NAME = 'attribute2') as attribute2
on attribute2.USER_ID = U.ID) as U;
有人知道如何使用条件api建立此类查询吗?