boolean isNullable, Mappings mappings, String sessionFactoryBeanName) { component.setEmbedded(true); Class<?> type = property.getType(); String role = qualify(type.getName(), property.getName()); component.setRoleName(role); component.setComponentClassName(type.getName()); PersistentEntity domainClass = property.getAssociatedEntity(); evaluateMapping(domainClass, defaultMapping); final List<PersistentProperty> properties = domainClass.getPersistentProperties(); Table table = component.getOwner().getTable(); PersistentClass persistentClass = component.getOwner(); String path = property.getName(); Class<?> propertyType = property.getOwner().getJavaClass();
if (prop instanceof Embedded) { Embedded embedded = (Embedded) prop; if(embedded.getAssociatedEntity() != null) { createObjectFromEmbeddedNativeEntry(embedded.getAssociatedEntity(), embeddedEntry); cacheEmbeddedEntry(embedded.getAssociatedEntity(), createEmbeddedCacheEntryKey(embeddedInstance), embeddedEntry); Association inverseSide = embedded.getInverseSide(); if (embedded.isBidirectional() && inverseSide != null) { createEntityAccess(embedded.getAssociatedEntity(), embeddedInstance); embeddedEa.setProperty(inverseSide.getName(), obj);
@Override public PersistentProperty getPropertyByName(String name) { if(name != null && name.contains(".")) { String[] props = name.split("\\."); // Get the embedded property type PersistentProperty embeddedProp = super.getPropertyByName(props[0]); if( embeddedProp instanceof Embedded) { PersistentEntity embeddedEntity = ((Embedded) embeddedProp).getAssociatedEntity(); return embeddedEntity.getPropertyByName(props[1]); } return super.getPropertyByName(name); } else { return super.getPropertyByName(name); } }
private void activateDirtyChecking(Object entity) { if(entity instanceof DirtyCheckable && proxyHandler.isInitialized(entity)) { PersistentEntity persistentEntity = mappingContext.getPersistentEntity(Hibernate.getClass(entity).getName()); entity = proxyHandler.unwrap(entity); DirtyCheckable dirtyCheckable = (DirtyCheckable) entity; Map<String, Object> dirtyCheckingState = persistentEntity.getReflector().getDirtyCheckingState(entity); if(dirtyCheckingState == null) { dirtyCheckable.trackChanges(); for (Embedded association : persistentEntity.getEmbedded()) { if(DirtyCheckable.class.isAssignableFrom(association.getType())) { Object embedded = association.getReader().read(entity); if(embedded != null) { DirtyCheckable embeddedCheck = (DirtyCheckable) embedded; if(embeddedCheck.listDirtyPropertyNames().isEmpty()) { embeddedCheck.trackChanges(); } } } } } } }