Так я новичок в Java и Play все еще путаются время от времени о квази объектно-ориентированном программировании ...Java Play Framework с помощью функции поиска и JPQL создать список объектов с дубликатами из списка строк
мне нужно конвертируйте строку с разделителями с повторяющимися значениями в список объектов, а также с этими повторяющимися значениями в том же порядке, что и строка.
Пример:
У меня есть форма, где пользователь отправляет пространства строки с разделителями. Например:
http://www.feedme.com?food=apple+orange+banana+apple+grape+apple
, который идет в
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 a го получить: Grape Яблоко Banana Orange
Это явно проблема с IN в ИНЕКЕ, так как это ожидаемое поведение.
Итак, мое текущее решение вручную заполнить список проходом по списку и выполнив следующую команду на каждой строке в Список продуктов
List<Food> foodList = new ArrayList<Food>(foods.size());
for (String name: foods){
Food food = Food.find("byName", name).first();
foodList.add(food);
}
Это работает, как я хочу его, но только кажется, не очень элегантный или эффективный. Нужны дубликаты, поэтому я считаю, что это исключает IN. У кого-нибудь есть лучшие идеи? Если ответ будет отрицательным, это тоже понравилось бы!
Большое спасибо.