我所描述的域名与我使用的域名不同(考虑到这一点,没有必要担心样本类没有使用Enum作为类型,并且其他事情),但描述我的问题。我想创建一个按用户名和类型过滤交易的查询。
SchoolResource
我想搜索与[{'用户名','类型'}]列表匹配的所有交易,其中情侣{"用户名" ," type"}由用户选择,用户可以根据需要选择
例如:全部查找:
对于我的问题,我有两种可能的解决方案,但我不喜欢任何
可能的解决方案1
我可以动态添加 n " OR"我的查询的条款,如:
public class Transaction {
private String userName;
private String type;
private BigDecimal value;
...
}
可能的解决方案2
我可以连接"用户名"到"类型"并检查结果是否包含在" username"的连接值列表中。使用"类型"这是动态生成的。
"WHERE (t.userName = 'Rafael' AND t.type = 'Debit')
OR (t.userName = 'Daniel' AND t.type = 'Credit')
... "
例如,变量" list"将具有以下值:
CONCAT(t.userName, '-', t.type) IN (list)
我使用 JPA ,是否有人有建议?