Я попытался заполнить List‹> запросом с помощью QueryDSL, но он выдает ошибку при заполнении bean-компонента.
Вот мой метод;
@Override
public Page<UserDTO> findByTypeQuerydsl(String filters, Pageable pageable) {
JPAQuery query = new JPAQuery(entityManager);
query = (JPAQuery) super.getQuerydsl().applyPagination(pageable, query);
List<UserDTO> results = query.from(qUserDTO)
.innerJoin(qUser)
.on(qUserDTO.id.eq(qUser.id))
.where(qUserDTO.login.eq(filters))
.list(Projections.fields(UserDTO.class, qUser.id, qUser.login, qUser.firstname, qUser.lastname, qUser.dayofbirth,
qUserDTO.district, qUserDTO.city));
return new PageImpl<UserDTO>(results, pageable, results.size());
}
Ошибка выдается на .list
и говорит;
Список методов (Projections.fields(UserDTO.class, qUser.id, qUser.login, qUser.firstname, qUser.lastname, qUser.dayofbirth, qUserDTO.district, qUserDTO.city)) не определен для типа QueryBase
Мой UserDTO.class;
@Entity
@Table(name="USERDTO")
@QueryEntity
public class UserDTO implements Serializable {
private static final long serialVersionUID = -7860243025833384447L;
@Id
private Long id;
private String login;
private String firstname;
private String lastname;
private Date dayofbirth;
private String city;
private String district;
@OneToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name="id")
User user;
//getters and setters
}
Версии com-querydsl;
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.1.3</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.1.3</version>
</dependency>