em.getTransaction().begin();
CriteriaBuilderImpl cb = (CriteriaBuilderImpl) em.getCriteriaBuilder();
MetamodelImpl mm = (MetamodelImpl) em.getMetamodel();
EntityType<Phone> Phone_ = mm.entity( Phone.class );
CriteriaQuery<Phone> cquery = cb.createQuery( Phone.class );
Root<Phone> phone = cquery.from( Phone.class );
ComparisonPredicate predicate = (ComparisonPredicate) cb.equal(
phone.get( Phone_.getSingularAttribute( "address", Address.class ) ),