【问题标题】:How to map jooq result to their respective entities如何将 jooq 结果映射到各自的实体
【发布时间】:2022-01-22 20:37:06
【问题描述】:

" 选择问题。*, question_option.id from question left join question_option on question_option.question_id = question.id; "

如何将获得的结果映射到实体。所以预期的结果应该是 谁能给出上面得到结果的示例代码

{
"id": 2655,
"type": "MCQSingleCorrect",
"difficultyLevel": "Advanced",
"question": "Which country are you from?",
"answer": null,
"marks": 1.5,
"negativeMarks": 0.5,
"hint": null,
"explanation": null,
"booleanAnswer": null,
"passage": null,
"isPassageQuestion": null,
"audioFile": null,
"videoFile": null,
"questionFiles": [],
"tags": [],
"updatedAt": "2021-12-21T11:57:03.229136Z",
"createdAt": "2021-12-21T11:57:03.229098Z",
"questionOptions": [
    {
        "id": 2719,
        "option": "India",
        "index": 1,
        "correct": false,
        "blank": null
    },
    {
        "id": 2720,
        "option": "Newzealand",
        "index": 1,
        "correct": false,
        "blank": null
    },
    {
        "id": 2721,
        "option": "England",
        "index": 1,
        "correct": true,
        "blank": null
    },
    {
        "id": 2722,
        "option": "Australia",
        "index": 1,
        "correct": false,
        "blank": null
    }
]}

【问题讨论】:

  • 我不明白你的问题。您想要 JSON 作为结果还是 JPA 实体?
  • 我希望它在 JPA 实体中。如果可能的话,你也可以说 JSON 吗?
  • 为什么需要 JPA 实体作为生成 JSON 的中间格式?使用jOOQ直接生成JSON会简单得多……
  • 我想要 JPA 实体,因为在获得查询结果后,有时我需要对数据做一些额外的操作。但是您能否在答案部分中发布代码以直接从 jooq 本身获取 Jason 结果。

标签: mysql spring-boot jooq


【解决方案1】:

您可以使用 jOOQ 编写查询并执行以下操作:

Query result = em.createNativeQuery(query.getSQL());
query.getResultList() // or query.getSingleResult() depending what you need.

在这里阅读更多: https://www.jooq.org/doc/3.15/manual/sql-execution/alternative-execution-models/using-jooq-with-jpa/using-jooq-with-jpa-native/

可以使用 SQL(以及 jOOQ)直接获取 JSON。这里有些例子: https://72.services/use-the-power-of-your-database-xml-and-json/

【讨论】:

  • 我已经尝试过您所说的使用“em”的方式。我得到了相同问题重复 4 次的重复实体
  • 然后您的 SQL 查询返回重复项。您可以删除对 question_option 的连接,因为这将由 JPA 完成
  • 现在,如果它自动加载连接就可以了。但是,如果我不需要加入,只需要问题实体。那么,我应该怎么做才能让它只在我想要的时候加入,而在我不需要的时候不加入呢?
  • 你必须写两个查询。
猜你喜欢
  • 2017-09-30
  • 2019-01-20
  • 2017-05-13
  • 2020-01-14
  • 2013-07-15
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多