Так что я новичок в Java, и Play все еще время от времени путается в квазиобъектно-ориентированном программировании ...
Мне нужно преобразовать строку с разделителями с повторяющимися значениями в список объектов, также с этимиповторяющиеся значения в том же порядке, что и строка.
Пример:
У меня есть форма, в которой пользователь отправляет строку, разделенную пробелом.Например:
http://www.feedme.com? Еда = яблоко + апельсин + банан + яблоко + виноград + яблоко
, который идет в
public static List<Food> getFoodList(String foodString) {
foodString = foodString.trim();
List<String> foods = Arrays.asList(foodString.split("\\s+"));
List<Food> foodList = Food.find("name IN (:foods)").bind("foods", foods).fetch();
return foodList;
}
Я печатаю цикл списка строк на экране и получаю ожидаемое: яблоко апельсин банан яблоко грейпфрут
Я печатаю значение Food.name для каждого в цикле foodList и получаю: Grape Apple Banana Orange
Это явно проблема с IN в предложении WHERE, так как это ожидаемое поведение.
Итак, мое текущее решение состоит в том, чтобы вручную заполнить список, просматривая List и выполняя следующеекаждая строка в списке продуктов
List<Food> foodList = new ArrayList<Food>(foods.size());
for ( String name: foods ){
Food food = Food.find("byName", name).first();
foodList.add(food);
}
Это работает так, как я хочу, но просто не выглядит очень элегантно или эффективно.Дубликаты необходимы, поэтому я думаю, что исключает IN.У кого-нибудь есть идеи получше?Если ответ «нет», буду признателен за это!
Большое спасибо.