我尝试使用QueryDSL来获取实体集合(表Category),其中每个实体都与其他类型的实体(表User)有@OneToMany关联,并使用连接来一次性获取所有实体。
问题是第二个实体(用户)包含不应包含的CLOB字段。我不想在查询中包含它们。假设有以下QueryDSL查询:
JPAQuery<CategoryEntity> baseQuery = new JPAQuery<>(entityManager)
.select(QCategoryEntity.categoryEntity)
.from(QCategoryEntity.categoryEntity)
.leftJoin(QCategoryEntity.categoryEntity.users, QUserEntity.userEntity)
.where(somePredicate);
QueryDSL将生成类似于
SELECT categoryen0_.id, (...), useren0_.id, (...)
FROM category categoryen0
LEFT OUTER JOIN user useren0 ON ...
WHERE ...
- 如何将特定的预测应用于此查询以排除CLOB数据?*
备注:
- 我试图避免原生查询和更改域模型。
- 我还没有找到对连接本身使用投影的方法。
- JPQL不支持在连接中使用子查询,因此QueryDSL也不支持。
1条答案
按热度按时间htrmnn0y1#
结果发现,由于我使用了提取连接,这使得我无法使用投影,所以这个方法并不奏效。解决这个问题需要使用基本连接,然后手动重建关系。