У меня есть две таблицы
purchase_details
tax_details
Обатаблицы имеют столбец категория .Но к категории таблицы purchase_details добавлены сведения о платформе.Как я могу получить все строки из таблицы tax_details , например, concat(tax_details.category, ', Mobile') in (purchase_details.category)
.Я использую Hibernate Criteria и не смог найти способ добиться этого
DetachedCriteria pdCriteria = DetachedCriteria.forClass(PurchaseDetails.class)
.setProjection(Projections.distinct(Projections.property("category")))
.add(Restrictions.eq("userId", userId)))
.add(Restrictions.eq("category", category + ", Mobile")); //category = Apartment
Criteria criteria = entityManager.unwrap(Session.class).createCriteria(TaxDetails.class);
criteria.add(Subqueries.propertyIn("category", pdCriteria));
List<TaxDetails> taxDetailsList = criteria.list();
В приведенном выше коде категории не будут совпадать, поскольку подзапрос возвращает категорию с добавлением "Mobile" к этому.Я вижу два способа решения этой проблемы:
- concat ", Mobile" на стороне tax_details при сопоставлении в подзапросе.
- Возврат результатов из подзапроса с помощью ", Mobile"вырезать.
К сожалению, я не могу найти, как это сделать в Hibernate Criteria.
Есть предложения?