/** * Initialize ID attribute */ @Override protected void initialize(Node created, Map<String, Object> properties) { // Set Embeddable ID attribute if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { // Populate embedded field value in serialized format created.setProperty(idColumnName, idUniqueValue); // Populated all other attributes of embedded into this node Set<Attribute> embeddableAttributes = metaModel .embeddable(m.getIdAttribute().getBindableJavaType()).getSingularAttributes(); for (Attribute attribute : embeddableAttributes) { String columnName = ((AbstractAttribute) attribute).getJPAColumnName(); if (columnName == null) columnName = attribute.getName(); Object value = PropertyAccessorHelper.getObject(id, (Field) attribute.getJavaMember()); if (value != null) created.setProperty(columnName, value); } } else { created.setProperty(idColumnName, properties.get(idColumnName)); } } };
relMetadata.getIdAttribute().getBindableJavaType()).getSingularAttributes(); for (Attribute embeddableAttribute : embeddableAttributes)
private void addAttribute(String prefix, SingularAttribute<?, ?> singularAttribute, Set<String> orderedAttributes) { String attributeName; if (prefix.isEmpty()) { attributeName = singularAttribute.getName(); } else { attributeName = prefix + singularAttribute.getName(); } if (singularAttribute.getType() instanceof EmbeddableType<?>) { String newPrefix = attributeName + "."; for (SingularAttribute<? super Object, ?> attribute : ((EmbeddableType<Object>) singularAttribute.getType()).getSingularAttributes()) { addAttribute(newPrefix, attribute, orderedAttributes); } } else { orderedAttributes.add(attributeName); } }
private boolean removeAttribute(String prefix, SingularAttribute<?, ?> singularAttribute, Map<String, Boolean> orderedAttributes) { String attributeName; if (prefix.isEmpty()) { attributeName = singularAttribute.getName(); } else { attributeName = prefix + singularAttribute.getName(); } if (singularAttribute.getType() instanceof EmbeddableType<?>) { String newPrefix = attributeName + "."; boolean removed = false; for (SingularAttribute<? super Object, ?> attribute : ((EmbeddableType<Object>) singularAttribute.getType()).getSingularAttributes()) { if (removeAttribute(newPrefix, attribute, orderedAttributes)) { removed = true; } } return removed; } else { return orderedAttributes.remove(attributeName) != null; } }
private void addAttributes(String prefix, Set<SingularAttribute<?, ?>> attributes, List<ResolvedExpression> resolvedExpressions, StringBuilder sb, JoinNode rootNode) { for (SingularAttribute<?, ?> attribute : attributes) { String attributeName; if (prefix.isEmpty()) { attributeName = attribute.getName(); } else { attributeName = prefix + attribute.getName(); } if (attribute.getType() instanceof EmbeddableType<?>) { Set<SingularAttribute<?, ?>> subAttributes = new TreeSet<>(ATTRIBUTE_NAME_COMPARATOR); subAttributes.addAll(((EmbeddableType<?>) attribute.getType()).getSingularAttributes()); addAttributes(attributeName + ".", subAttributes, resolvedExpressions, sb, rootNode); } else { sb.setLength(0); rootNode.appendDeReference(sb, attributeName, false); PathExpression expression = (PathExpression) rootNode.createExpression(attributeName); JpaMetamodelAccessor jpaMetamodelAccessor = mainQuery.jpaProvider.getJpaMetamodelAccessor(); expression.setPathReference(new SimplePathReference(rootNode, attributeName, getMetamodel().type(jpaMetamodelAccessor.getAttributePath(getMetamodel(), rootNode.getManagedType(), attributeName).getAttributeClass()))); resolvedExpressions.add(new ResolvedExpression(sb.toString(), expression)); } } }
String newPrefix = attributeName + "."; Set<SingularAttribute<?, ?>> subAttributes = new TreeSet<>(ATTRIBUTE_NAME_COMPARATOR); subAttributes.addAll(((EmbeddableType<?>) singularAttribute.getType()).getSingularAttributes()); for (SingularAttribute<?, ?> attribute : subAttributes) { addAttributes(ownerType, elementCollectionPath, fieldPrefix, newPrefix, attribute, orderedAttributes);
/** * Initialize ID attribute */ @Override protected void initialize(Node created, Map<String, Object> properties) { // Set Embeddable ID attribute if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { // Populate embedded field value in serialized format created.setProperty(idColumnName, idUniqueValue); // Populated all other attributes of embedded into this node Set<Attribute> embeddableAttributes = metaModel .embeddable(m.getIdAttribute().getBindableJavaType()).getSingularAttributes(); for (Attribute attribute : embeddableAttributes) { String columnName = ((AbstractAttribute) attribute).getJPAColumnName(); if (columnName == null) columnName = attribute.getName(); Object value = PropertyAccessorHelper.getObject(id, (Field) attribute.getJavaMember()); if (value != null) created.setProperty(columnName, value); } } else { created.setProperty(idColumnName, properties.get(idColumnName)); } } };
relMetadata.getIdAttribute().getBindableJavaType()).getSingularAttributes(); for (Attribute embeddableAttribute : embeddableAttributes)