use of org.hibernate.metamodel.internal.MetamodelImpl in project hibernate-orm by hibernate.
the class QueryBuilderTest method testEqualityComparisonEntityConversion.
@Test
public void testEqualityComparisonEntityConversion() {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
Address address = new Address("Street Id", "Fake Street", "Fake City", "Fake State", "Fake Zip");
Phone phone1 = new Phone("1", "555", "0001", address);
Phone phone2 = new Phone("2", "555", "0002", address);
Phone phone3 = new Phone("3", "555", "0003", address);
Phone phone4 = new Phone("4", "555", "0004");
List<Phone> phones = new ArrayList<Phone>(3);
phones.add(phone1);
phones.add(phone2);
phones.add(phone3);
address.setPhones(phones);
em.persist(address);
em.persist(phone4);
em.getTransaction().commit();
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)), address);
cquery.where(predicate);
List<Phone> results = em.createQuery(cquery).getResultList();
assertEquals(3, results.size());
em.getTransaction().commit();
em.close();
}
use of org.hibernate.metamodel.internal.MetamodelImpl in project hibernate-orm by hibernate.
the class QueryBuilderTest method testTypeConversion.
@Test
public void testTypeConversion() {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
CriteriaBuilderImpl cb = (CriteriaBuilderImpl) em.getCriteriaBuilder();
MetamodelImpl mm = (MetamodelImpl) em.getMetamodel();
EntityType<Product> Product_ = mm.entity(Product.class);
// toFloat
CriteriaQuery<Float> floatQuery = cb.createQuery(Float.class);
Root<Product> product = floatQuery.from(Product.class);
floatQuery.select(cb.toFloat(product.get(Product_.getSingularAttribute("quantity", Integer.class))));
em.createQuery(floatQuery).getResultList();
// toDouble
CriteriaQuery<Double> doubleQuery = cb.createQuery(Double.class);
product = doubleQuery.from(Product.class);
doubleQuery.select(cb.toDouble(product.get(Product_.getSingularAttribute("quantity", Integer.class))));
em.createQuery(doubleQuery).getResultList();
em.getTransaction().commit();
em.close();
}
use of org.hibernate.metamodel.internal.MetamodelImpl in project hibernate-orm by hibernate.
the class MetadataTest method testBuildingMetamodelWithParameterizedCollection.
@Test
@SuppressWarnings({ "unchecked" })
public void testBuildingMetamodelWithParameterizedCollection() {
Metadata metadata = new MetadataSources().addAnnotatedClass(WithGenericCollection.class).buildMetadata();
SessionFactoryImplementor sfi = (SessionFactoryImplementor) metadata.buildSessionFactory();
MetamodelImpl metamodel = new MetamodelImpl(sfi, ((MetadataImplementor) metadata).getTypeConfiguration());
metamodel.initialize((MetadataImplementor) metadata, JpaMetaModelPopulationSetting.IGNORE_UNSUPPORTED);
sfi.close();
}
use of org.hibernate.metamodel.internal.MetamodelImpl in project dhis2-core by dhis2.
the class TableNameToEntityMapping method extractTableNames.
public void extractTableNames(final Class<?> modelClazz) {
final MetamodelImpl metamodel = (MetamodelImpl) sessionFactory.getMetamodel();
final EntityPersister entityPersister = metamodel.entityPersister(modelClazz);
for (int i = 0; i < entityPersister.getPropertyTypes().length; i++) {
Type type = entityPersister.getPropertyTypes()[i];
if (type.isCollectionType()) {
CollectionType collectionType = (CollectionType) type;
CollectionPersister collectionPersister = metamodel.collectionPersister(collectionType.getRole());
if (collectionPersister instanceof BasicCollectionPersister) {
BasicCollectionPersister bc = (BasicCollectionPersister) collectionPersister;
String tableName = bc.getTableName();
tableNameToEntity.computeIfAbsent(tableName, s -> new ArrayList<>()).add(new Object[] { modelClazz, collectionType.getRole() });
}
}
}
if (entityPersister instanceof SingleTableEntityPersister) {
String tableName = ((SingleTableEntityPersister) entityPersister).getTableName();
tableNameToEntity.computeIfAbsent(tableName, s -> new ArrayList<>()).add(new Object[] { modelClazz });
} else {
throw new IllegalArgumentException(modelClazz + " does not map to a single table.");
}
}
use of org.hibernate.metamodel.internal.MetamodelImpl in project hibernate-orm by hibernate.
the class QueryBuilderTest method testConstructor.
@Test
public void testConstructor() {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
CriteriaBuilderImpl cb = (CriteriaBuilderImpl) em.getCriteriaBuilder();
MetamodelImpl mm = (MetamodelImpl) em.getMetamodel();
CriteriaQuery<Customer> cquery = cb.createQuery(Customer.class);
Root<Customer> customer = cquery.from(Customer.class);
EntityType<Customer> Customer_ = customer.getModel();
cquery.select(cb.construct(Customer.class, customer.get(Customer_.getSingularAttribute("id", String.class)), customer.get(Customer_.getSingularAttribute("name", String.class))));
TypedQuery<Customer> tq = em.createQuery(cquery);
tq.getResultList();
em.getTransaction().commit();
em.close();
}
Aggregations