1

我在一个使用 Spring MVC 和 Hibernate 的应用程序上工作。我正在实现一些 RESTful Web 服务,并且很好奇如何轻松过滤集合服务器端。

例如,我希望能够过滤员工实体的集合。我研究了几个选项,例如RQLGoogle处理自定义搜索的方式、Ebay 的答案,甚至是 Yahoo 的YQL。它们似乎都是过滤问题的好答案,但我似乎找不到任何可以让我轻松实现这个概念的库。

我确实在这里找到了:

自 2.3.0 版本以来,Apache CXF 通过其 JAX-RS 实现引入了 FIQL 支持

但我们已经在使用 Spring MVC。

我很惊讶没有库可以获取下面的粗体查询字符串,例如,并将其转换为 SQL 或 Hibernate 可以用来过滤的东西。

/雇员?lastname=john 或 jon&hiredate lt 20010201

完全有可能我想错了,但我想利用社区的经验和知识。我错过了什么?

4

2 回答 2

1

我知道这是旧的,但为了完整起见,至少有两个库可以处理解析 RQL:

我自己使用 jazdw/rql-parser 并开始使用 SQL 映射器,但正如 Oleksi 提到的,验证、字段映射等需要很多自定义代码,所以我不知道我能做到多通用.

于 2015-12-17T12:44:59.953 回答
0

直接将这样的 GET 转换为 SQL 的库可能非常不安全。您需要有一个中间层来进行一些验证,以确保用户不会弄乱 URL 来执行 SQL 注入。

据我所知,您能做的最好的事情就是使用您的 JAX-RS 实现来干净地读取这些查询参数,验证它们,并使用准备好的 SQL 语句之类的东西来安全地执行它们。

于 2012-05-09T21:15:28.547 回答