我在使用Spring MVC和Hibernate的应用程序上工作。我正在实现一些RESTful Web服务,并且很好奇如何轻松过滤服务器端的集合。
作为一个例子,我希望能够过滤员工实体的集合。我研究了几个选项,例如RQL,Google处理自定义搜索的方式,Ebay's回答,甚至雅虎YQL。它们似乎都是过滤问题的好答案,但我似乎找不到任何可以让我轻松实现这个概念的库。
我确实找到here,即:
自从2.3.0发布以来,Apache CXF通过其JAX-RS实现引入了FIQL支持
但我们已经在使用Spring MVC。
我很惊讶没有用于获取下面的粗体查询字符串的库,例如,将其转换为SQL或Hibernate可用于过滤的内容。
/ employees? lastname = john OR jon& hiredate lt 20010201
我完全有可能错误地想到这一点,但我想深入了解社区的经验和知识。我错过了什么?
答案 0 :(得分:1)
我知道这是旧的,但为了完整起见,至少有两个库处理解析RQL:
我自己使用jazdw / rql-parser并开始使用SQL映射器,但正如Oleksi所说,验证,字段映射等需要很多自定义代码,所以我不知道我是如何通用的。
答案 1 :(得分:0)
直接将GET转换为SQL的库可能非常不安全。您需要有一个中间层来进行一些验证,以确保用户没有弄乱URL来执行SQL注入。
据我所知,您可以做的最好的事情就是使用JAX-RS实现来干净地读取这些查询参数,验证它们,并使用类似准备好的SQL语句来安全地执行它们。