JPA Как получить свойство из Arraylist объектов в отношении ManyToMany - PullRequest
1 голос
/ 01 июня 2019

Я борюсь за то, чтобы получить атрибут от массива, заполненного объектами. Я хочу найти все блюда, которые принадлежат к определенной еде, отфильтровать их по dishType и отобразить их в виде таблицы.

Итак, я написал метод getDishNameByType, но он вернет ноль. Любая помощь будет принята с благодарностью!

Meal.Java

public class Meal {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    private Set<Dish> dishesList = new HashSet<>();


    public String getDishNameByType(String dishType) {  
        for (Dish dish : dishesList) {
            if (dishType == dish.getDishType()) {
                return dish.getDishName();
            }
        }
        return null;    
    }
}

Dish.Java

public class Dish {

    @Id
    @GeneratedValue
    private Long id;   

    private String dishName;

    private String dishType;

    @ManyToMany(mappedBy = "dishesList")
    private Set<Meal> mealsList = new HashSet<>();

View.html

<tr th:if="${mealPage.empty}">
    <td colspan="7" th:text="#{meals.list.table.empty}">No meals found</td>
</tr>
<tr th:each="meal : ${mealPage}">
    <td th:text="${meal.id}">1</td>
    <td th:each="dish : ${meal.dishesList}"
    th:text="${meal.getDishNameByType("Maincourse")}"></td>

</tr>

1 Ответ

1 голос
/ 01 июня 2019

Если у вас есть два объекта, obj1 и obj2, тогда obj1 == obj2 будет true тогда и только тогда, когда два объекта одинаковы.

String foo = "abc";
String bar = "abc";

boolean same = (foo == bar); //false
boolean similar = (foo.equals(bar)); //true

Так что вам нужно будет позвонить equals:

public String getDishNameByType(String dishType) {  
    for (Dish dish : dishesList) {
        if ((dishType.equals(dish.getDishType()))) {
            return dish.getDishName();
        }
    }
    return null;    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...