首页 > 解决方案 > 我想在QueryDsl的@QueryProjection注解中查询时使用多个对象域

问题描述

我知道在querydsl中有几种投影方法。

像这个Projection.bean、Projection.field、Projection.constructor。

但我想做@QueryProjection 注释,但它不起作用。

创建的Entity和Dto类如下。

@NoArgsConstructor
@Entity
public class User {
    
    @Id
    @GeneratedValue
    private Long id;
    
    @Column(length = 64)
    private String email;
    
    @Column(length = 64)
    private String name;
    
    @Embedded
    private Address address;
    
    @Column
    private Date updateDateTime;
    
    @Column
    private Date createDateTime;        

}

@Data
@NoArgsConstructor
public class UserDto {
    
    private Long id;
    
    private String name;
    
    private String email;
    
    private AddressDto address;
    
    @QueryProjection
    public UserDto (Long id,String name,String email,Address address) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.address = address;
    }
}

是查询代码有问题,但是如下。

public List<UserDto> getUser(UserDto dto) {
    return queryFactory
            .select(new QUserDto(user.id,user.name,user.email, user.address))
            .from(user)
            .fetch();       
}

如果您能提供帮助,我将不胜感激。

标签: spring-boot

解决方案


推荐阅读