Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA如何从多个关系中的对象数组列表中获取属性_Java_Hibernate_Spring Boot_Jpa_Spring Data Jpa - Fatal编程技术网

Java JPA如何从多个关系中的对象数组列表中获取属性

Java JPA如何从多个关系中的对象数组列表中获取属性,java,hibernate,spring-boot,jpa,spring-data-jpa,Java,Hibernate,Spring Boot,Jpa,Spring Data Jpa,我正在为如何从充满对象的arraylist中获取属性而苦苦挣扎。我想找到属于某顿饭的所有菜肴,并按dishType过滤这些菜肴,然后将它们显示在视图中的表中 因此,我编写了getDishNameByType方法,但它将返回null。任何帮助都将不胜感激 fine.Java public class Meal { @Id @GeneratedValue private Long id; @ManyToMany private Set<Dish>

我正在为如何从充满对象的arraylist中获取属性而苦苦挣扎。我想找到属于某顿饭的所有菜肴,并按dishType过滤这些菜肴,然后将它们显示在视图中的表中

因此,我编写了getDishNameByType方法,但它将返回null。任何帮助都将不胜感激

fine.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;    
    }
}
public class Dish {

    @Id
    @GeneratedValue
    private Long id;   

    private String dishName;

    private String dishType;

    @ManyToMany(mappedBy = "dishesList")
    private Set<Meal> mealsList = new HashSet<>();
公共课餐{
@身份证
@生成值
私人长id;
@许多
私有集dishesList=新HashSet();
公共字符串getDishNameByType(字符串dishType){
用于(菜肴:菜肴列表){
if(dishType==dish.getDishType()){
return dish.getDishName();
}
}
返回null;
}
}
Dish.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;    
    }
}
public class Dish {

    @Id
    @GeneratedValue
    private Long id;   

    private String dishName;

    private String dishType;

    @ManyToMany(mappedBy = "dishesList")
    private Set<Meal> mealsList = new HashSet<>();
公共类菜肴{
@身份证
@生成值
私人长id;
私有字符串名称;
私有字符串类型;
@许多(mappedBy=“dishesList”)
private Set 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.

如果有两个对象,
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;    
}

好的,谢谢,我已经忘记了字符串和Int之间的区别。但是我仍然在th:text=“${mean.getDishNameByType(Maincourse)}”的视图中遇到了一个问题,我得到了错误:无法解决Maincourse@Bram您有以下代码:“${MEIN.getDishNameByType(“Maincourse”)}”。我不是Hibernate用户,但您似乎对该报价有问题。您似乎需要避开该问题。我认为“${MEIN.getDishNameByType(\'Maincourse\”)}”可能会对您有所帮助,但我不知道,但是,我确信问题在于引号被解释为值的结束。非常感谢!引号确实被解释为结束值。我使用单引号进行了工作:th:text=“${mean.getDishNameByType('Maincourse')”.@Bram你自己解决了这个问题。太好了。