使用" IN"比较属性对。

时间:2015-09-08 20:33:12

标签: jpa jpql

我所描述的域名与我使用的域名不同(考虑到这一点,没有必要担心样本类没有使用Enum作为类型,并且其他事情),但描述我的问题。我想创建一个按用户名和类型过滤交易的查询。

SchoolResource

我想搜索与[{'用户名','类型'}]列表匹配的所有交易,其中情侣{"用户名" ," type"}由用户选择,用户可以根据需要选择

例如:全部查找:

  • "借记"由" Rafael"
  • 进行的交易
  • "信用"由" Daniel"
  • 制作的交易
  • "借记"由" Monica"
  • 制作的交易
  • "信用"由" Monica"
  • 制作的交易

对于我的问题,我有两种可能的解决方案,但我不喜欢任何

  

可能的解决方案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 ,是否有人有建议?

0 个答案:

没有答案
相关问题