T
- The generic base entity type or from a DTO subclass thereof.@FunctionalInterface protected static interface BaseEntityService.MappedQueryBuilder<T>
BaseEntityService.getPage(Page, boolean)
methods taking
a specific result type, such as an entity subclass (DTO). You must return a LinkedHashMap
with
Getter
as key and Expression
as value. The mapping must be in exactly the same order as
constructor arguments of your DTO.
You do not need this interface directly. Just supply a lambda. Below is an usage example:
public class YourEntityDTO extends YourEntity { private BigDecimal totalPrice; public YourEntityDTO(Long id, String name, BigDecimal totalPrice) { setId(id); setName(name); this.totalPrice = totalPrice; } public BigDecimal getTotalPrice() { return totalPrice; } }
@Stateless public class YourEntityService extends BaseEntityService<YourEntity> { public void getPageOfYourEntityDTO(Page page, boolean count) { return getPage(page, count, YourEntityDTO.class (criteriaBuilder, query, root) -> { Join<YourEntityDTO, YourChildEntity> child = root.join("child"); LinkedHashMap<Getter<YourEntityDTO>, Expression<?>> mapping = new LinkedHashMap<>(); mapping.put(YourEntityDTO::getId, root.get("id")); mapping.put(YourEntityDTO::getName, root.get("name")); mapping.put(YourEntityDTO::getTotalPrice, builder.sum(child.get("price"))); return mapping; }); } }
Modifier and Type | Method and Description |
---|---|
LinkedHashMap<org.omnifaces.utils.reflect.Getter<T>,Expression<?>> |
build(CriteriaBuilder criteriaBuilder,
AbstractQuery<T> query,
Root<? super T> root) |
LinkedHashMap<org.omnifaces.utils.reflect.Getter<T>,Expression<?>> build(CriteriaBuilder criteriaBuilder, AbstractQuery<T> query, Root<? super T> root)
Copyright © 2015–2018 OmniFaces. All rights reserved.