当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf视图找不到jOOQ连接查询的属性/字段

曾弘扬
2023-03-14

我刚接触Spring、Thymeleaf和jOOQ。我想在概述中显示数据库查找的结果。当我只查询select()时。从(配置)来看,Thymeleaf视图工作得很好。但是,当我想加入User表,将用户名而不仅仅是id添加到结果中时,我得到了一个错误。

这是webbrowser中的错误:

2016年10月10日星期一16:04:17 CEST出现意外错误(类型=内部服务器错误,状态=500)。计算SpringEL表达式时出现异常:“config.name”(概述:37)

这是Eclipse中的错误:

org.springframework.expression.spel。SpelEvaluationException:EL1008E:(位置7):在“org.jooq.impl”类型的对象上找不到属性或字段“name”。可能不是公开的?

我知道我的视图代码是错误的,但我不知道应该把“config.name”改成什么来获得正确的property.field。

这是我的控制器:

@Controller
public class OverviewController
{
    public ArrayList configurationList = new ArrayList();

    @RequestMapping("/overview")
    public String showConfigurationList(Model model) 
    {
        model.addAttribute("configs", getConfigurations());
        return "overview";
    }

    public ArrayList getConfigurations()
    {
        try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) 
        {
            DSLContext create = DSL.using(conn, SQLDialect.POSTGRES_9_5);
            Result<Record5<String, String, Timestamp, String, String>> result = create.select(CONFIGURATION.NAME, CONFIGURATION.VERSION, CONFIGURATION.DATE_MODIFIED, CONFIGURATION.AUTHOR_USER_ID, USER.NAME)
                    .from(USER).join(CONFIGURATION)
                    .on(CONFIGURATION.AUTHOR_USER_ID.equal(USER.ID)))
                    .fetch();
            /*Result<Record> result = create.select()
                    .from(CONFIGURATION)
                    .fetch();*/

            if(configurationList.isEmpty() == true)
            {
                for (Record5 r : result) {                  
                configurationList.add(r);
                }
            }               
        }             
        catch (Exception e) 
        {
            System.out.println("ERROR: " + e);          
        }
        return configurationList;
    }

这是Thymeleaf的观点:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Nazza Mediator - Overview</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="webjars/bootstrap/3.3.7-1/css/bootstrap.min.css" />
    <script src="http://code.jquery.com/jquery.js" />
    <script src="webjars/bootstrap/3.3.7-1/js/bootstrap.min.js" />
</head>

<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="/">Nazza Mediator</a>
    </div>
    <ul class="nav navbar-nav">
      <li><a href="/">Home</a></li>
      <li class="active"><a href="/overview">Configuration Overview</a></li>
    </ul>
  </div>
</nav>

    <h3>Configuration Overview</h3>

    <table class="table table-hover">
      <tr>
        <th>NAME</th>
        <th>VERSION</th>
        <th>DATE MODIFIED</th>
        <th>AUTHOR</th>
      </tr>
      <tr th:each="config : ${configs}">
        <td th:text="${config.name}"></td>
        <td th:text="${config.version}"></td>
        <td th:text="${config.dateModified}"></td>
        <td th:text="${config.authorUserId}"></td>
      </tr>
    </table>
  </body>

</html>

共有1个答案

虞裕
2023-03-14

我假设您已经启动并运行了jOOQ代码生成器。

因此,当您使用第一个select时

Result<Record> result = create.select()
                .from(CONFIGURATION)
                .fetch();

实际上,最终的结果是

如果您写下连接并手动添加字段,您将拥有一个通用记录,一个只提供#get(String field dName)和其他一些的实现。

在您看来,您必须更改对值的访问权限,如下所示

<td th:text="${config.get('NAME')}"></td>

你必须在每个领域都这样做。

但是要小心,在您的查询中有两个名为“name”的字段,我想你应该将其中一个别名。例如,USER. NAME. as('userName')并在调用中使用它来获取。

如果有帮助,请告诉我。

还有一个编辑:jOOQ的Lukas Eder问是否可以使用配置['NAME]:这在通用记录中是不可能的,但也只能在特定记录中使用。此外,在所有引用字段名的情况下,都必须小心,因为它区分大小写。

 类似资料:
  • 我正试图按照本教程将thymeleaf添加到springboot应用程序中,但我似乎无法让它工作。辅导的:http://spr.com/part-2-adding-views-using-thymeleaf-and-jsp-if-you-want/ 当我在LoginController中使用@RestController启动应用程序时,我能够让springstart正常工作,但是当我将@RestC

  • 问题内容: 我目前正在做类似物物交换系统的系统。这样的情况。客户(茉莉花)需要输入“ NAME”属性(她必须寻找的内容)并输入“ SEEK”属性(她需要寻找的内容)。为了获得结果,“ SEEK”属性必须与其他客户的“名称”属性匹配,而其他客户的“ SEEK”属性必须与Jasmine的“ HAVE”属性匹配。 例如我有表项(已经在数据库中) 例如,茉莉花具有“名称”属性的耳机和“搜索”属性的笔记本电

  • 我正在尝试实现一个自定义的 Spring 存储库。我有界面: 其中RataEntity类是 它的实施 和以下存储库类 当我运行我的应用程序时,我得到这个错误: 未能创建方法公共摘要的查询java.util.Listit.aubay.PreliosPAN.repositories.RataRepositoryCustom.getRateFromTipo频率zaRimborso(java.lang.字

  • 我试图运行Webpack上的一个项目和我得到多个错误 我应该安装我所有的打字,所以我不知道这些是从哪里来的。我试图从一个编译的项目中复制package.json,但没有帮助。我错过了什么? 我的tConfig看起来像这样

  • 我试着寻找类似的问题,但没有成功。 谢谢!

  • 我正在开发一个基本的自定义相机应用程序这些是我的依赖 camera_version=“1.0.0”