Java 正在填充行,其中一列引用了另一个表(数据库)。需要显示引用表的另一列吗

Java 正在填充行,其中一列引用了另一个表(数据库)。需要显示引用表的另一列吗,java,spring-boot,thymeleaf,Java,Spring Boot,Thymeleaf,我是springboot的初学者。我遇到了一个情况。好的,在我解释之前,让我先给出表格结构 费用 expensesId, categories, categoryId, categoryname 类别 expensesId, categories, categoryId, categoryname 费用表是指类别ID为的类别表 我能够使用从控制器发送到视图的expensesList填充datatable。但我的问题是我在填充中得到了columnid,但我希望用categoryname来填

我是springboot的初学者。我遇到了一个情况。好的,在我解释之前,让我先给出表格结构

费用

expensesId, categories,
categoryId, categoryname
类别

expensesId, categories,
categoryId, categoryname
费用表是指类别ID为的类别表

我能够使用从控制器发送到视图的
expensesList
填充
datatable
。但我的问题是我在填充中得到了
columnid
,但我希望用
categoryname
来填充该列。我考虑了一段时间可能的解决方案,我想出了一个愚蠢的想法,如果映射
categoryId
thymeleaf
中的条件与
categoryName
匹配,但我不想做那部分,因为我将来会有更多的类别增长,代码很难维护

我真的需要一些帮助

请提供链接,如果一个解决方案已经可用,我错过了在我的谷歌搜索这个问题


很抱歉标题部分的英文不好,因为我无法进一步压缩这个问题。

我刚刚将包含Id和名称的类别对象添加到了中的每个费用对象中 费用对象列表并传递给控制器。现在,我可以直接在视图中使用CategoryName和Thymeleaf,如下所示

<td th:text="${expense.categories.categoryname}"></td>>
>
我在控制器中更改的内容

之前

@RequestMapping(value = "/expenses")
    public String toExpensesPage(Model model) {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        User user = monitorService.getUserByUserName(authentication.getName()).get(0);
        List<Categories>  categoriesList = monitorService.getAllCategories();
        model.addAttribute("expenses",new Expenses());
        if(categoriesList != null) {
            model.addAttribute("categories",categoriesList);
        }
        List<Expenses> expensesList = monitorService.getAllExpensesActive(user.getUserid());
        model.addAttribute("expensesList",expensesList);
        return "common/expensespage";
    }
@RequestMapping(value=“/expenses”)
公共字符串到费用页(模型){
身份验证=SecurityContextHolder.getContext().getAuthentication();
User User=monitorService.getUserByUserName(authentication.getName()).get(0);
List categoriesList=monitorService.getAllCategories();
model.addAttribute(“费用”,新费用());
if(categoriesList!=null){
model.addAttribute(“categories”,categoriesList);
}
List expensesList=monitorService.getAllExpensesActive(user.getUserid());
model.addAttribute(“expensesList”,expensesList);
返回“普通/费用支出”;
}
至。

@RequestMapping(value = "/expenses")
public String toExpensesPage(Model model) {
    Map<Integer,String> categoryMap = new HashMap<Integer, String>();
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    User user = monitorService.getUserByUserName(authentication.getName()).get(0);
    /* getting Category List This contains both categoryId and categoryname */
    List<Categories>  categoriesList = monitorService.getAllCategories();
    /* Using hashmap to map id to name  so we dont need to iterate categoryList or call to database with category Id..*/
    for(int i = 0; i < categoriesList.size();i++){
        categoryMap.put(categoriesList.get(i).getCategoryid(),

categoriesList.get(i).getCategoryname());
        }
        model.addAttribute("expenses",new Expenses());
        if(categoriesList != null) {
            model.addAttribute("categories",categoriesList);
        }
        List<Expenses> expensesList = monitorService.getAllExpensesActive(user.getUserid());
        /*Assigning category object to expenses object*/
        for(int i = 0; i < expensesList.size();i++){
            Categories categories = new Categories();
            categories.setCategoryid(expensesList.get(i).getCategories().getCategoryid());
            categories.setCategoryname(categoryMap.get(expensesList.get(i).getCategories().getCategoryid()));
            expensesList.get(i).setCategories(categories);
        }
        model.addAttribute("expensesList",expensesList);
        return "common/expensespage";
    }
@RequestMapping(value=“/expenses”)
公共字符串到费用页(模型){
Map categoryMap=新HashMap();
身份验证=SecurityContextHolder.getContext().getAuthentication();
User User=monitorService.getUserByUserName(authentication.getName()).get(0);
/*获取类别列表此列表包含categoryId和categoryname*/
List categoriesList=monitorService.getAllCategories();
/*使用hashmap将id映射到name,这样我们就不需要迭代categoryList或使用category id调用数据库*/
对于(int i=0;i

添加了关于我如何做的评论的内部代码。希望有人能帮上忙。

我可以知道投票失败的原因吗?因为我看不出任何合理的理由。我发布了一个问题,没有引起注意,我尝试了各种解决方案,我发布了我找到的解决方案,希望有人能从中受益。此外,这个问题也不是重复的。