首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NamedNativeQuery和SqlResultSetMapping映射任何集合

使用NamedNativeQuery和SqlResultSetMapping映射任何集合
EN

Stack Overflow用户
提问于 2019-06-11 21:41:19
回答 1查看 342关注 0票数 0

所以我编写原生查询,因为它们非常复杂,无法获得所有需要的数据等等。我目前正面临一个通常由Hibernate/JPA等完成的问题。

想象一下:

代码语言:javascript
复制
@Entity
FooEntity{
     @Id
     public Long id;
     @ManyToMany
     public List<FeeEntity> feeEntities;
}

@Entity
FeeEntity{
     @Id
     public Long id;
     @Column
     public String name;
}

和一些DTO

代码语言:javascript
复制
FooDTO{
     private final Long id;
     private final List<FeeDTO> someStrings;

     public FooDTO(Long id, List<FeeDTO> feeDtos){
          ...
     }
}

我的@SqlResultSetMapping基本上看起来像

代码语言:javascript
复制
@SqlResultSetMapping(name = "FooDTO", 
     classes = @ConstructorResult(targetClass = FooDTO.class, columns = {
          @ColumnResult(name = "id", type = Long.class),     
          //TODO @ColumnResult(name = "feeDtos", type = FeeDtos.class)     
     })
)

命名的原生查询类似于:

代码语言:javascript
复制
@NamedNativeQueries({
    @NamedNativeQuery(
                name = "FooData",
                query = "SELECT MAINSELECT.ID AS id, " +
                        "???" +
                        " FROM Foo MAINSELECT WHERE ... " +
                        ...,
                resultSetMapping = "FooDTO")
})

我必须如何编写原生查询?在没有子查询的情况下,这是可能的吗?或者我必须为结果的每个数据行执行/执行子查询吗?我在我心爱的谷歌上找不到任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 21:44:24

这不可能。

SQL查询的结果总是一个表。因此没有嵌套表,因此不能将其映射到Collection。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56545124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档