public String getMappedBy() { return getInternal().getMappedBy(); }
private Object getHierarchicalMappedChild(AbstractMemberMetaData mmd, ObjectProvider sm) { Collection<Object> coll = getHierarchicalMappedChildren(mmd.getTypeName(), mmd.getMappedBy(), null, sm); if (coll.iterator().hasNext()) { return coll.iterator().next(); } return null; }
/** * Returns the owner member meta data * @return the owner member meta data, may be null for an unidirectional relationship */ public AbstractMemberMetaData getOwnerMMD() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return otherMmd; } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return null; } return mmd; }
/** * Returns the non-owner member meta data * @return the non-owner member meta data, may be null for an unidirectional relationship */ public AbstractMemberMetaData getNonOwnerMMD() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return mmd; } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return mmd; } return otherMmd; }
/** * Returns the non-owner member meta data * @return the non-owner member meta data, may be null for an unidirectional relationship */ public AbstractMemberMetaData getNonOwnerMMD() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return mmd; } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return mmd; } return otherMmd; }
/** * Returns the owner member meta data * @return the owner member meta data, may be null for an unidirectional relationship */ public AbstractMemberMetaData getOwnerMMD() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return otherMmd; } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return null; } return mmd; }
/** * This seems to return the field number in the element of the relation when it is a bidirectional relation. * @param op ObjectProvider for the owner. * @return The field number in the element for this relation */ protected int getFieldNumberInElementForBidirectional(ObjectProvider op) { if (ownerMemberMetaData.getMappedBy() == null) { // Unidirectional return -1; } // This gives a different result when using persistent interfaces. // For example with the JDO2 TCK, org.apache.jdo.tck.pc.company.PIDepartmentImpl.employees will return 3, // yet the ownerMemberMetaData.getRelatedMetaData returns 8 since the generated implementation will have all fields in a single MetaData (numbering from 0), // whereas in a normal inheritance tree there will be multiple MetaData (the root starting from 0) // TODO Support DOT notation in mappedBy return op.getClassMetaData().getAbsolutePositionOfMember(ownerMemberMetaData.getMappedBy()); }
@Override public String getMappedBy(EntityType<?> ownerType, String attributeName) { AbstractMemberMetaData metaData = getAttribute(ownerType, attributeName).getMetadata(); return metaData.getMappedBy(); }
@Override public String getMappedBy(EntityType<?> ownerType, String attributeName) { AbstractMemberMetaData metaData = getAttribute(ownerType, attributeName).getMetadata(); return metaData.getMappedBy(); }
@Override public String getMappedBy(EntityType<?> ownerType, String attributeName) { AbstractMemberMetaData metaData = getAttribute(ownerType, attributeName).getMetadata(); return metaData.getMappedBy(); }
public static boolean isChildOfHierarchicalMapping(AbstractMemberMetaData mmd, MetaDataManager mmgr) { String mappedBy = mmd.getMappedBy(); if (mappedBy != null) { AbstractClassMetaData targetCmd = LDAPUtils.getEffectiveClassMetaData(mmd, mmgr); AbstractMemberMetaData mappedByMmd = targetCmd.getMetaDataForMember(mappedBy); if (mappedByMmd != null) { return isParentOfHierarchicalMapping(mappedByMmd, mmgr); } } return false; }
public RelationByDnMetaData(AbstractMemberMetaData mmd, MetaDataManager mmgr) { this.mmd = mmd; AbstractClassMetaData otherClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, mmgr); hasColumn = mmd.getColumnMetaData() != null && mmd.getColumnMetaData().length > 0; if (mmd.getMappedBy() != null) { otherMmd = otherClassMetaData.getMetaDataForMember(mmd.getMappedBy()); } else if (mmd.getElementMetaData() != null && !hasColumn) { // always null otherMmd = null; } // else ??? if (mmd.getMappedBy() != null) { emptyValue = LDAPUtils.getEmptyValue(otherMmd); } else { emptyValue = LDAPUtils.getEmptyValue(mmd); } }
private static String getForceApiRelationshipName(AbstractMemberMetaData ammd, Map<String, String> extensions, OMFContext omf) { AbstractClassMetaData acmd = PersistenceUtils.getMemberElementClassMetaData(ammd, omf.getClassLoaderResolver(null), omf.getMetaDataManager()); AbstractMemberMetaData mmd = acmd.getMetaDataForMember(ammd.getMappedBy()); if (mmd == null) { // The mappedBy field does not exist throw new NucleusUserException("Cannot access mappedBy field " + ammd.getMappedBy() + " on entity " + acmd.getName() + " at " + ammd.getFullFieldName()); } String tableName = acmd.getEntityName(); String fieldNameNoSuffix = getFieldName(mmd, extensions); extensions = getForceExtensions(mmd); String childRelationshipName = extensions.get("childRelationshipName"); String relationshipName = childRelationshipName != null ? childRelationshipName : String.format("%s_%ss", fieldNameNoSuffix, tableName); if (relationshipName.length() > 40) { relationshipName = relationshipName.substring(0, 40); } return relationshipName; }
private static String getForceApiRelationshipName(AbstractMemberMetaData ammd, Map<String, String> extensions, OMFContext omf) { AbstractClassMetaData acmd = PersistenceUtils.getMemberElementClassMetaData(ammd, omf.getClassLoaderResolver(null), omf.getMetaDataManager()); AbstractMemberMetaData mmd = acmd.getMetaDataForMember(ammd.getMappedBy()); if (mmd == null) { // The mappedBy field does not exist throw new NucleusUserException("Cannot access mappedBy field " + ammd.getMappedBy() + " on entity " + acmd.getName() + " at " + ammd.getFullFieldName()); } String tableName = acmd.getEntityName(); String fieldNameNoSuffix = getFieldName(mmd, extensions); extensions = getForceExtensions(mmd); String childRelationshipName = extensions.get("childRelationshipName"); String relationshipName = childRelationshipName != null ? childRelationshipName : String.format("%s_%ss", fieldNameNoSuffix, tableName); if (relationshipName.length() > 40) { relationshipName = relationshipName.substring(0, 40); } return relationshipName; }
if (mmd.getMappedBy() != null) otherMmd = otherClassMetaData.getMetaDataForMember(mmd.getMappedBy()); if (mmd.getMappedBy() != null) if (mmd.getMappedBy() != null)
public String getOwnerAttributeName() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return LDAPUtils.getAttributeNameForField(otherMmd); } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return mmd.getElementMetaData().getColumnName(); } return LDAPUtils.getAttributeNameForField(mmd); }
public String getOwnerAttributeName() { if (mmd.getMappedBy() != null) { // mapped-by is always non-owner return LDAPUtils.getAttributeNameForField(otherMmd); } if (mmd.getElementMetaData() != null && !hasColumn) { // element is always non-owner return mmd.getElementMetaData().getColumnName(); } return LDAPUtils.getAttributeNameForField(mmd); }
if (fmd.getMappedBy() != null) {
private void updateOneToOneBidirectionalOwnerObjectForField( ObjectProvider op, AbstractMemberMetaData fmd, Entity owningEntity) { MappedStoreManager storeMgr = (MappedStoreManager) op.getExecutionContext().getStoreManager(); ExecutionContext ec = op.getExecutionContext(); ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractMemberMetaData[] relatedMmds = fmd.getRelatedMemberMetaData(clr); String fullClassName = ((AbstractClassMetaData) relatedMmds[0].getParent()).getFullClassName(); DatastoreClass refTable = storeMgr.getDatastoreClass(fullClassName, clr); JavaTypeMapping refMapping = refTable.getMemberMapping(fmd.getMappedBy()); if (refMapping.isNullable()) { // Null out the relationship to the object being deleted. refMapping.setObject(ec, owningEntity, new int[1], op.getObject()); // TODO If the object being deleted is this objects parent, do we delete this? // TODO(maxr): Do I need to manually request an update now? } }
Collection<Object> coll = getHierarchicalMappedChildren(mmd.getCollection().getElementType(), mmd.getMappedBy(), mmd, op); return SCOUtils.wrapSCOField(op, fieldNumber, coll, true);