Bra*_*aek 5 java sql jpa distinct
我想知道JPA规范中是否要使用等效的ResultTransformer.DISTINCT_ROOT_ENTITY?现在,我正在尝试实现搜索功能,为此我必须使用JPA规范(不允许使用CriteriaQuery或其他替代方法)。
我必须在搜索查询中执行JOIN,因为实体之间存在一对多的关系。
所以,现在,我正在这样做:
String type = "admin";
SpecificationBuilder sb = SpecificationBuilder.getInstance();
Specification<WebContentImpl> spec = new Specification<WebContentImpl>() {
@Override
public Predicate toPredicate(Root<WebContentImpl> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
return cb.equal(root.join("users", JoinType.LEFT).get("type"), type);
}
};
sb.addSpecification(spec);
Run Code Online (Sandbox Code Playgroud)
如您所见,我可以包含一个JOIN。多个用户被映射到一个Web内容项。但是,例如,当有3个用户映射到1个Web内容项时,该Web内容项仅应显示1次,而应显示3次。过去我曾遇到过此问题,标志ResultTransformer.DISTINCT_ROOT_ENTITY当时帮助了我,但现在无法使用该功能。
当然,我可以实施自己的解决方案以省去双打,但这对于性能而言将是可怕的。而且我已经尝试过更改JoinType,但结果始终相同。
有人在那里有一些提示可以帮助我吗?:-)
提前致谢!
亲切的问候,K