MS Lesson 18: Dynamic Search
package az.etibarli.demospecification.service; import az.etibarli.demospecification.dto.request.ProductSearchRequest; import az.etibarli.demospecification.dto.request.SearchMatchMode; import az.etibarli.demospecification.entity.Product; import az.etibarli.demospecification.repository.ProductRepository; import az.etibarli.demospecification.specification.ProductSpecifications; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Query; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import lombok. RequiredArgsConstructor ; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype. Service ; import org.springframework.transaction.annotation. Transactional ; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; ...