我试图用spring数据做一个类投影。它应该是工作的,因为要求是“其构造函数的参数名必须匹配根实体类的属性。”并且它匹配。但不管出于什么原因,它抛出了一个例外:
java.lang.ClassCastException: class ws.xx.posts.post.PostSnapshot cannot be cast to class ws.xx.posts.post.dto.query.PostDetailsQueryDTO (ws.xx.posts.post.PostSnapshot and ws.xx.posts.post.dto.query.PostDetailsQueryDTO are in unnamed module of loader 'app')
值得注意的是,实体位于“posts domain”模块中,dto位于“posts app”模块中。我已经尝试过在没有lombok的情况下手动执行它,但是结果是一样的,它抛出了一个异常。
实体(在单独的文件orm.xml中配置,这是它的值对象):
@EqualsAndHashCode
@ToString
@Getter(value = PACKAGE)
@NoArgsConstructor(access = PROTECTED)
@AllArgsConstructor(access = PACKAGE)
class PostSnapshot {
private Long id;
private UUID postId;
private UUID ownerId;
private String title;
private String description;
private ZonedDateTime createDate;
}
dto公司:
@Builder(toBuilder = true)
@EqualsAndHashCode
@ToString
@Getter
@AllArgsConstructor
public class PostDetailsQueryDTO implements Serializable {
private UUID postId;
private UUID ownerId;
private String title;
private String description;
private ZonedDateTime createDate;
}
查询存储:
interface SqlPostQueryRepository extends PostQueryRepository, Repository<PostSnapshot, Long> {
@Override
PostDetailsQueryDTO findByPostId(UUID postId);
@Override
Page<PostDetailsQueryDTO> findAll(Pageable pageable);
}
暂无答案!
目前还没有任何答案,快来回答吧!