【问题标题】:Map result set to custom pojo which is not entity将结果集映射到不是实体的自定义 pojo
【发布时间】:2019-01-20 01:05:57
【问题描述】:

我需要通过连接多个表来获取 4 列。我已经创建了查询。但是如何将结果集映射到不是实体的 pojo 并且我想使用 Spring Data JPA。

有人可以帮忙吗?

谢谢!

编辑 自定义 POJO 类:

`

@Data
    @AllArgsConstructor
    @NamedNativeQuery(name = CustomPojo.retriveCustomPojo
            query = Constants.CUSTOM_QUERY, resultSetMapping = CustomDataMapping")
    @SqlResultSetMapping(name = "CustomDataMapping",
            classes = {
                    @ConstructorResult(
                            targetClass = CustomPojo.class,
                            columns = {
                                    @ColumnResult(name = "NAME"),
                                    @ColumnResult(name = "TYPE"),
                                    @ColumnResult(name = "TITLE"),
                                    @ColumnResult(name = "DESCRIPTION")
                            }
                            )
                }
        )
    public class CustomPojo implements Serializable {

        private static final long serialVersionUID = 1L;

        private String name
        private String type;
        private String title;
        private String description;

    }

`

【问题讨论】:

标签: java spring-data-jpa sqlresultsetmapping


【解决方案1】:

注释必须在实体上!不可能将它们放在 POJO 上。

@NamedNativeQuery(name = CustomPojo.retriveCustomPojo
            query = Constants.CUSTOM_QUERY, resultSetMapping = CustomDataMapping")
@SqlResultSetMapping(name = "CustomDataMapping",
            classes = {
                    @ConstructorResult(
                            targetClass = CustomPojo.class,
                            columns = {
                                    @ColumnResult(name = "NAME"),
                                    @ColumnResult(name = "TYPE"),
                                    @ColumnResult(name = "TITLE"),
                                    @ColumnResult(name = "DESCRIPTION")
                            }
                            )
                }
        )

另一种方法是使用 QLRM 来摆脱这些注释。

查看 GitHub 页面:https://github.com/simasch/qlrm

【讨论】:

  • 我解决了。我在实体上应用了注释。但现在我收到此错误Got different size of tuples and aliases
  • Constants.CUSTOM_QUERY 长什么样子?
  • 实际上,这个 [link] stackoverflow.com/questions/49056084/… 有效。第二个答案。但不确定这是否是永久解决方案。
  • 这是我的查询select book.name, book.type, title.title, title.description from book book join details title on (title.id = book.id)
  • 这是我的接口方法@Query(name = "CustomPojo.retriveCustomPojo", nativeQuery = true) List<CustomPojo> retriveCustomPojo();
猜你喜欢
  • 2020-04-07
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多