我有一个休息网络服务,它将接受“名称”并使用此名称从数据库中获取令牌并将令牌返回。其余网络服务的 url 将是:
http://localhost:8080/NameService/Tokens?name=Bob
在serviceLayer中,我的方法如下:
@GET
@Path("Tokens")
@Produces("application/xml")
public JAXBElement<GetToken> getokenByName(@QueryParam("name") final String name ) {
if(name!=null){
// use hibernate criteria to fetch the records from db
Criteria crit = getSession().createCriteria(getPersistentClass());
crit.add(Restrictions.eq("name",name))
}
}
现在我们的需求发生了变化,客户端可以在请求中同时发送多个名称。例如,给我令牌 where name = "bob" or "brendon" or "aaron" 的 URL 可能是这样的:
http://localhost:8080/NameService/Tokens?name=Bob,Aaron,Brendon
发送的姓名数量是可变的。它可以是 1 或 2 或 3 等等。关于如何通过调整上面显示的代码(适用于一个名称)来实现这种拆分并将它们作为服务层中的 OR 条件传递给休眠条件的任何想法?
一种方法可能是StringUtils
使用分隔符(逗号)解析不同的名称,然后形成一个列表以及如何将列表中的名称添加到条件限制中。但不确定这是否有效。
有任何想法吗?