String select = "SELECT p FROM ProductPricing p where p.productId.supplierId.id=:id"; // nested condition based on the FK productpricing -> product -> supplier
Query query = hibernateSession.createQuery(select);
query.setParameter("id", Integer.parseInt(dsRequest.getFieldValue("supplier").toString()));
List<ProductPricing> models = query.list();
String select = "SELECT p FROM ProductPricing p where p.productId.supplierId.id=:id"; // nested condition based on the FK productpricing -> product -> supplier
Query query = hibernateSession.createQuery(select);
query.setParameter("id", Integer.parseInt(dsRequest.getFieldValue("supplier").toString()));
List<ProductPricing> models = query.list();
for (int i = 0; i < models.size(); i++)
{
if (models.get(i).getProductId() != null)
{
models.get(i).getProductId().getProductCode();
models.get(i).getProductId().getBrandName();
models.get(i).getPurchasePrice();
System.out.println(models.get(i).getProductId().getBrandName());
}
}
select pp1.id, pp1.priceDate, pp1.purchasePrice, pp1.salesPrice, pp1.consumerPrice
from product p
inner join productPricing pp1
on pp1.productID = p.id
where p.supplierID=3
and exists (select pp2.ProductID, MAX(pp2.priceDate) as max_priceDate
from productPricing pp2
where pp2.productID = pp1.productID
group by pp2.ProductID
having MAX(pp2.priceDate) = pp1.priceDate)
List<ProductPricing> models = query.list();
from ProductPricing pp1 join Product p where pp1.productId.supplierId.id=2
and exists (select pp2.productId, MAX(pp2.priceDate) as max_priceDate
from ProductPricing pp2 where pp2.productId = pp1.productId
group by pp2.productId having MAX(pp2.priceDate) = pp1.priceDate)
Something like:
String select = "SELECT p, MAX(ID) FROM ProductPricing p where p.productId.supplierId.id=