我有类似的东西( querydsl QClasses中的myFavouriteBook和book ):
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 但是存在一个错误,即实体和数据不兼容。我也尝试过内部Projections.bean,但它不起作用。
发布于 2018-08-22 22:38:14
您需要将MyFavouriteBookDto的拟合构造函数注释为@QueryProjection。这将生成QMyFavouriteBookDto。然后,您需要在select中使用生成的类,如new QMyFavouriteBookDto(myFavouriteBook.customizationId, myFavouriteBook.position),这样就可以完成此任务。
https://stackoverflow.com/questions/51967447
复制相似问题