Java JPA如何从多个关系中的对象数组列表中获取属性
我正在为如何从充满对象的arraylist中获取属性而苦苦挣扎。我想找到属于某顿饭的所有菜肴,并按dishType过滤这些菜肴,然后将它们显示在视图中的表中 因此,我编写了getDishNameByType方法,但它将返回null。任何帮助都将不胜感激 fine.JavaJava 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>
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你自己解决了这个问题。太好了。