@Test
public void sortingByEmptyNestedFieldsShouldReturnAllProductsPlainJpaShortend() {
entityManager.persist(new Product("FUBAR", null));
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Product> query = cb.createQuery(Product.class);
Root<Product> root = query.from(Product.class);
query.select(root)
.orderBy(cb.asc(root.get("vendorInfo").get("vendor").get("name")));
List<Product> products = entityManager.createQuery(query).getResultList();
assertEquals("Repository should return demo product", 1, products.size());
}
@Test
public void sortingShouldReturnAllProductsPlainJpa() {
VendorAddress address = entityManager.merge(new VendorAddress("FooCity", "12345", "FooStreet", "1"));
Vendor vendor = entityManager.merge(new Vendor("ACME", address));
entityManager.merge(new Product("FUBAR", new Product.VendorInfo(vendor, "Best buddy")));
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Product> query = cb.createQuery(Product.class);
Root<Product> root = query.from(Product.class);
query.select(root)
.orderBy(cb.asc(root.get("vendorInfo").get("vendor").get("address").get("street")));
List<Product> products = entityManager.createQuery(query).getResultList();
assertEquals("Repository should return demo product", 1, products.size());
}