【问题标题】:Querydsl InnerJoin DTOQuerydsl InnerJoin DTO
【发布时间】:2019-01-28 17:59:48
【问题描述】:

我有类似的东西(myFavouriteBook 和 book 来自 querydsl QClasses):

JPAQuery<MyFavouriteBookDto> query = new JPAQuery<>(entityManager);

return query.select(Projections.bean(MyFavouriteBookDto.class,
            myFavouriteBook.customizationId,
            myFavouriteBook.position))
            .from(myFavouriteBook)
            .innerJoin(myFavouriteBook.book, book)
            .where(book.bookId.eq(myFavouriteBook.book.bookId))
            .fetch();

我不想从两个类中获取所有字段,所以我使用 dtos。但是我怎样才能使用 book dto 而不是 entity? 我已经尝试添加

            myFavouriteBook.book

之间

     myFavouriteBook.customizationId,
     myFavouriteBook.position 

但是有实体和dto不兼容的错误。我也尝试过使用内部 Projections.bean,但它不起作用。

【问题讨论】:

    标签: java spring hibernate jpql querydsl


    【解决方案1】:

    您需要将 MyFavouriteBookDto 的拟合构造函数注释为 @QueryProjection。这将生成QMyFavouriteBookDto。 然后你需要在select 中使用生成的类,比如new QMyFavouriteBookDto(myFavouriteBook.customizationId, myFavouriteBook.position) 这应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多