private List<?> findAttributes(Object object) { Class<?> attributeClass = getConfig().getAttributeClass(); String identityProperty = getConfig().getAttributeIdentityProperty().getName(); EntityManager em = getEntityManager(); CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<?> criteria = builder.createQuery(attributeClass); Root<?> root = criteria.from(attributeClass); List<Predicate> predicates = new ArrayList<Predicate>(); predicates.add(builder.equal(root.get(identityProperty), object)); criteria.where(predicates.toArray(new Predicate[predicates.size()])); return em.createQuery(criteria).getResultList(); }
private void removeAttributes(Object object) { EntityManager em = getEntityManager(); if (getConfig().getAttributeClass() != null) { List<?> results = findAttributes(object); for (Object result : results) { em.remove(result); } } }
private List<?> findAttributes(IdentityType identityType, String idValue, Attribute<? extends Serializable> userAttribute) { Property<Object> attributeIdentityProperty = getConfig().getAttributeIdentityProperty(); EntityManager em = getEntityManager(); CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<?> criteria = builder.createQuery(getConfig().getAttributeClass()); Root<?> root = criteria.from(getConfig().getAttributeClass()); List<Predicate> predicates = new ArrayList<Predicate>(); Join<?, ?> join = root.join(attributeIdentityProperty.getName()); if (IDMUtil.isAgentType(identityType.getClass())) { predicates.add(builder.equal(join.get(getConfig().getIdentityIdProperty().getName()), idValue)); } else { predicates.add(builder.equal(join.get(getConfig().getModelProperty(PROPERTY_IDENTITY_NAME).getName()), idValue)); } predicates.add(builder.equal(root.get(getConfig().getAttributeNameProperty().getName()), userAttribute.getName())); criteria.where(predicates.toArray(new Predicate[predicates.size()])); return em.createQuery(criteria).getResultList(); }
if (getConfig().getAttributeClass() != null) { EntityManager em = getEntityManager(); CriteriaQuery<?> criteria = builder.createQuery(getConfig().getAttributeClass()); Root<?> attributeClassRoot = criteria.from(getConfig().getAttributeClass()); List<Predicate> predicates = new ArrayList<Predicate>();
Object newInstance = getConfig().getAttributeClass().newInstance();
AttributeParameter customParameter = (AttributeParameter) queryParameter; Subquery<?> subquery = criteria.getCriteria().subquery(storeConfig.getAttributeClass()); Root fromProject = subquery.from(storeConfig.getAttributeClass()); Subquery<?> select = subquery.select(fromProject.get(storeConfig.getModelProperty(PROPERTY_ATTRIBUTE_IDENTITY).getName()));