public BlazeCriteriaBuilderImpl(CriteriaBuilderFactory cbf) { this.metamodel = cbf.getService(EntityMetamodel.class); this.cbf = cbf; }
public BlazeCriteriaBuilderImpl(CriteriaBuilderFactory cbf) { this.metamodel = cbf.getService(EntityMetamodel.class); this.cbf = cbf; }
protected String groupByPathExpressions(String groupByExpression, String... pathExpressions) { if (cbf.getService(DbmsDialect.class).supportsGroupByExpressionInHavingMatching()) { return groupByExpression; } Set<String> distinctGroupBys = new LinkedHashSet<String>(); distinctGroupBys.addAll(Arrays.asList(pathExpressions)); return StringUtils.join(", ", distinctGroupBys); }
protected String groupByPathExpressions(String groupByExpression, String... pathExpressions) { if (cbf.getService(DbmsDialect.class).supportsGroupByExpressionInHavingMatching()) { return groupByExpression; } Set<String> distinctGroupBys = new LinkedHashSet<String>(); distinctGroupBys.addAll(Arrays.asList(pathExpressions)); return StringUtils.join(", ", distinctGroupBys); }
public static <S, T> Mapper<S, T> forViewToEntityAttributeMapping(EntityViewManagerImpl evm, ManagedViewType<S> sourceViewType, Class<T> targetEntityClass, Map<String, String> mapping) { EntityMetamodel metamodel = evm.getCriteriaBuilderFactory().getService(EntityMetamodel.class); List<AttributeAccessor> source = new ArrayList<>(mapping.size()); List<AttributeAccessor> target = new ArrayList<>(mapping.size()); for (Map.Entry<String, String> entry : mapping.entrySet()) { source.add(Accessors.forViewAttributePath(evm, sourceViewType, entry.getKey(), true)); target.add(Accessors.forEntityMapping(evm, targetEntityClass, entry.getValue())); } return new AttributeMapper<>(source, target); }
public DefaultBasicUserTypeRegistry(BasicUserTypeRegistry original, CriteriaBuilderFactory cbf) { this.entityMetamodel = cbf.getService(EntityMetamodel.class); this.entityBasicUserType = new EntityBasicUserType(cbf.getService(JpaProvider.class)); Map<Class<?>, BasicUserType<?>> basicUserTypes = new HashMap<>(original.getBasicUserTypes()); Map<Class<?>, Map<Class<?>, TypeConverter<?, ?>>> converters = new HashMap<>(original.getTypeConverters()); handleLobType(basicUserTypes, converters, Blob.class, BlobBasicUserType.INSTANCE, BlobTypeConverter.INSTANCE); handleLobType(basicUserTypes, converters, Clob.class, ClobBasicUserType.INSTANCE, ClobTypeConverter.INSTANCE); handleLobType(basicUserTypes, converters, NClob.class, NClobBasicUserType.INSTANCE, NClobTypeConverter.INSTANCE); // Make nested maps unmodifiable for (Map.Entry<Class<?>, Map<Class<?>, TypeConverter<?, ?>>> entry : converters.entrySet()) { entry.setValue(Collections.unmodifiableMap(entry.getValue())); } this.basicUserTypes = Collections.unmodifiableMap(basicUserTypes); this.converters = Collections.unmodifiableMap(converters); }
protected void clearCollections(EntityManager em, Class<?>... entityClasses) { for (Class<?> c : entityClasses) { List<String> deletes = PLURAL_DELETES.get(c); if (deletes == null) { Metamodel entityMetamodel = cbf.getService(Metamodel.class); EntityType<?> t = entityMetamodel.entity(c); deletes = new ArrayList<>(); for (PluralAttribute<?, ?, ?> pluralAttribute : t.getPluralAttributes()) { JoinTable joinTable = jpaProvider.getJoinTable(t, pluralAttribute.getName()); if (joinTable != null) { deletes.add("delete from " + joinTable.getTableName()); } } PLURAL_DELETES.put(c, deletes); } for (String delete : deletes) { em.createNativeQuery(delete).executeUpdate(); } } }
protected void clearCollections(EntityManager em, Class<?>... entityClasses) { for (Class<?> c : entityClasses) { List<String> deletes = PLURAL_DELETES.get(c); if (deletes == null) { Metamodel entityMetamodel = cbf.getService(Metamodel.class); EntityType<?> t = entityMetamodel.entity(c); deletes = new ArrayList<>(); for (PluralAttribute<?, ?, ?> pluralAttribute : t.getPluralAttributes()) { JoinTable joinTable = jpaProvider.getJoinTable(t, pluralAttribute.getName()); if (joinTable != null) { deletes.add("delete from " + joinTable.getTableName()); } } PLURAL_DELETES.put(c, deletes); } for (String delete : deletes) { em.createNativeQuery(delete).executeUpdate(); } } }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
private String getIdAttribute(Class<?> entityClass) { return cbf.getService(EntityMetamodel.class) .getManagedType(ExtendedManagedType.class, entityClass) .getIdAttribute() .getName(); }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
private String getIdAttribute(Class<?> entityClass) { return cbf.getService(EntityMetamodel.class) .getManagedType(ExtendedManagedType.class, entityClass) .getIdAttribute() .getName(); }
private String createQueryString(EntityViewManagerImpl evm, ManagedViewType<?> subviewType) { EntityMetamodel entityMetamodel = evm.getMetamodel().getEntityMetamodel(); EntityType<?> entityType = entityMetamodel.getEntity(entityClass); // We can't query embeddables if (entityType == null) { return null; } Set<String> fetchJoinableRelations = new HashSet<>(subviewType.getAttributes().size()); addFetchJoinableRelations(fetchJoinableRelations, "", subviewType); CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { if (fetchJoinableRelations.isEmpty()) { return null; } else { return cbf.create(em, entityClass) .fetch(fetchJoinableRelations.toArray(new String[fetchJoinableRelations.size()])) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }
config = configure(config); cbf = config.createCriteriaBuilderFactory(emf); jpaProvider = cbf.getService(JpaProvider.class); dbmsDialect = cbf.getService(DbmsDialect.class);
private String createQueryString(EntityViewManagerImpl evm, EntityType<?> entityType, Map<String, Map<?, ?>> fetchGraph) { CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { String[] paths = flatten(fetchGraph); if (paths.length == 0) { return null; } else { return cbf.create(em, entityClass) .fetch(paths) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }
((MappingAttribute<?, ?>) sourceViewType.getIdAttribute()).getMapping() ); ExpressionFactory ef = evm.getCriteriaBuilderFactory().getService(ExpressionFactory.class); for (MethodAttribute<?, ?> attribute : targetViewType.getAttributes()) { if (attribute.isUpdatable() && attribute instanceof MappingAttribute<?, ?> && attribute instanceof SingularAttribute<?, ?>) {