package viettel.cyberbot.demoMysql.Repository.Imp;
import org.springframework.stereotype.Repository;
import viettel.cyberbot.demoMysql.Entity.Product;
import viettel.cyberbot.demoMysql.Entity.ViettelCyberSpace;
import viettel.cyberbot.demoMysql.Entity.ViettelCyberSpaceDetails;
import viettel.cyberbot.demoMysql.Repository.ViettelCyberSpaceRepository;
import javax.persistence.*;
import javax.persistence.criteria.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Repository
public class ViettelCyberSpaceRepositoryImp implements ViettelCyberSpaceRepository {
@PersistenceContext
EntityManager entityManager;
@Override
public Object[] getDataByCriteriaQuery(int id) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object[]> query = criteriaBuilder.createQuery(Object[].class);
Root<Product> productTable = query.from(Product.class);
Root<ViettelCyberSpace> vtccTable = query.from(ViettelCyberSpace.class);
Predicate condition = criteriaBuilder.equal(productTable.get("productId"), id);
//table product chỉ lấy column name và table product vtcc chỉ lấy column department
query.multiselect(productTable.get("productName"), vtccTable.get("departmentName"))
.where(criteriaBuilder.equal(productTable.get("departmentId"), vtccTable.get("departmentId"))).where(condition);
return entityManager.createQuery(query).getResultList().get(0);
}
@Override
public List<Object> getDataByCriteriaQueryOneToOne() {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> query = criteriaBuilder.createQuery(Object.class);
Root<ViettelCyberSpaceDetails> vtccDetails = query.from(ViettelCyberSpaceDetails.class);
Root<ViettelCyberSpace> vtccTable = query.from(ViettelCyberSpace.class);
query.multiselect(vtccDetails, vtccTable)
.where(criteriaBuilder.equal(vtccDetails.get("departmentDetailId"), vtccTable.get("departmentId")));
List<Object> list=entityManager.createQuery(query).getResultList();
System.out.println(list.get(1));
return entityManager.createQuery(query).getResultList();
}
}