我有类似的东西(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。但是我该如何使用dto书而不是实体书? 我尝试添加
myFavouriteBook.book
之间
myFavouriteBook.customizationId,
myFavouriteBook.position
,但是存在一个错误,即实体和dto不兼容。我也尝试过内部Projections.bean,但是它不起作用。
答案 0 :(得分:0)
您需要将MyFavouriteBookDto的拟合构造函数注释为@QueryProjection
。这将生成QMyFavouriteBookDto
。
然后,您需要像select
这样在new QMyFavouriteBookDto(myFavouriteBook.customizationId, myFavouriteBook.position)
中使用生成的类
那应该可以解决问题。