当前位置: 首页>>代码示例>>Java>>正文


Java ClassDescriptor.getPkFields方法代码示例

本文整理汇总了Java中org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields方法的典型用法代码示例。如果您正苦于以下问题:Java ClassDescriptor.getPkFields方法的具体用法?Java ClassDescriptor.getPkFields怎么用?Java ClassDescriptor.getPkFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.ojb.broker.metadata.ClassDescriptor的用法示例。


在下文中一共展示了ClassDescriptor.getPkFields方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getReferenceFKValue

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private Object getReferenceFKValue(Object persistableObject, ObjectReferenceDescriptor chkRefCld, String fkName) {
    ClassDescriptor classDescriptor = getClassDescriptor(persistableObject.getClass());
    Object referenceObject = ObjectUtils.getPropertyValue(persistableObject, chkRefCld.getAttributeName());

    if (referenceObject == null) {
        return null;
    }

    FieldDescriptor[] refFkNames = chkRefCld.getForeignKeyFieldDescriptors(classDescriptor);
    ClassDescriptor refCld = getClassDescriptor(chkRefCld.getItemClass());
    FieldDescriptor[] refPkNames = refCld.getPkFields();


    Object fkValue = null;
    for (int i = 0; i < refFkNames.length; i++) {
        FieldDescriptor fkField = refFkNames[i];

        if (fkField.getAttributeName().equals(fkName)) {
            fkValue = ObjectUtils.getPropertyValue(referenceObject, refPkNames[i].getAttributeName());
            break;
        }
    }

    return fkValue;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:26,代码来源:PersistenceServiceOjbImpl.java

示例2: getForeignKeyFieldName

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getForeignKeyFieldName(java.lang.Object,
 *      java.lang.String, java.lang.String)
 */

@Override
public String getForeignKeyFieldName(Class persistableObjectClass, String attributeName, String pkName) {
	String fkName = "";
	ClassDescriptor classDescriptor = getClassDescriptor(persistableObjectClass);
	ObjectReferenceDescriptor objectReferenceDescriptor = classDescriptor.getObjectReferenceDescriptorByName(attributeName);
	if (objectReferenceDescriptor == null) {
		throw new RuntimeException("Attribute name " + attributeName + " is not a valid reference to class " + persistableObjectClass.getName());
	}
	ClassDescriptor referenceDescriptor = this.getClassDescriptor(objectReferenceDescriptor.getItemClass());

	FieldDescriptor[] fkFields = objectReferenceDescriptor.getForeignKeyFieldDescriptors(classDescriptor);
	FieldDescriptor[] pkFields = referenceDescriptor.getPkFields();
	for (int i = 0; i < pkFields.length; i++) {
		FieldDescriptor pkField = pkFields[i];
		if (pkField.getAttributeName().equals(pkName)) {
			fkName = fkFields[i].getAttributeName();
		}
	}
	return fkName;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:26,代码来源:PersistenceStructureServiceOjbImpl.java

示例3: getNestedForeignKeyMap

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getNestedForeignKeyMap(java.lang.Class)
 */

@Override
public Map getNestedForeignKeyMap(Class persistableObjectClass) {
	Map fkMap = new HashMap();
	ClassDescriptor classDescriptor = getClassDescriptor(persistableObjectClass);
	Vector objectReferences = classDescriptor.getObjectReferenceDescriptors();
	for (Iterator iter = objectReferences.iterator(); iter.hasNext();) {
		ObjectReferenceDescriptor objectReferenceDescriptor = (ObjectReferenceDescriptor) iter.next();
		ClassDescriptor referenceDescriptor = this.getClassDescriptor(objectReferenceDescriptor.getItemClass());

		FieldDescriptor[] fkFields = objectReferenceDescriptor.getForeignKeyFieldDescriptors(classDescriptor);
		FieldDescriptor[] pkFields = referenceDescriptor.getPkFields();
		for (int i = 0; i < pkFields.length; i++) {
			FieldDescriptor pkField = pkFields[i];
			fkMap.put(objectReferenceDescriptor.getAttributeName() + "." + pkField.getAttributeName(), fkFields[i].getAttributeName());
		}
	}

	return fkMap;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:24,代码来源:PersistenceStructureServiceOjbImpl.java

示例4: readPkValuesFrom

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
public void readPkValuesFrom(ResultSetAndStatement rs_stmt, Map row)
{
    String ojbClass = SqlHelper.getOjbClassName(rs_stmt.m_rs);
    ClassDescriptor cld;
    
    if (ojbClass != null)
    {
        cld = m_cld.getRepository().getDescriptorFor(ojbClass);
    }
    else
    {
        cld = m_cld;
    }

    FieldDescriptor[] pkFields = cld.getPkFields();
    readValuesFrom(rs_stmt, row, pkFields);
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:18,代码来源:RowReaderDefaultImpl.java

示例5: bindDelete

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * binds the Identities Primary key values to the statement
 */
public void bindDelete(PreparedStatement stmt, Identity oid, ClassDescriptor cld) throws SQLException
{
    Object[] pkValues = oid.getPrimaryKeyValues();
    FieldDescriptor[] pkFields = cld.getPkFields();
    int i = 0;
    try
    {
        for (; i < pkValues.length; i++)
        {
            setObjectForStatement(stmt, i + 1, pkValues[i], pkFields[i].getJdbcType().getType());
        }
    }
    catch (SQLException e)
    {
        m_log.error("bindDelete failed for: " + oid.toString() + ", while set value '" +
                pkValues[i] + "' for column " + pkFields[i].getColumnName());
        throw e;
    }
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:23,代码来源:StatementManager.java

示例6: buildSuperJoinTree

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * build the Join-Information if a super reference exists
 *
 * @param left
 * @param cld
 * @param name
 */
protected void buildSuperJoinTree(TableAlias left, ClassDescriptor cld, String name, boolean useOuterJoin)
{
    ClassDescriptor superCld = cld.getSuperClassDescriptor();
    if (superCld != null)
    {
        SuperReferenceDescriptor superRef = cld.getSuperReference();
        FieldDescriptor[] leftFields = superRef.getForeignKeyFieldDescriptors(cld);
        TableAlias base_alias = getTableAliasForPath(name, null, null);
        String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
        TableAlias right = new TableAlias(superCld, aliasName, useOuterJoin, null);

        Join join1to1 = new Join(left, leftFields, right, superCld.getPkFields(), useOuterJoin, "superClass");
        base_alias.addJoin(join1to1);

        buildSuperJoinTree(right, superCld, name, useOuterJoin);
    }
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:25,代码来源:SqlQueryStatement.java

示例7: getStatement

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/** Return SELECT clause for object existence call */
public String getStatement()
{
    if(sql == null)
    {
        StringBuffer stmt = new StringBuffer(128);
        ClassDescriptor cld = getClassDescriptor();

        FieldDescriptor[] fieldDescriptors = cld.getPkFields();
        if(fieldDescriptors == null || fieldDescriptors.length == 0)
        {
            throw new OJBRuntimeException("No PK fields defined in metadata for " + cld.getClassNameOfObject());
        }
        FieldDescriptor field = fieldDescriptors[0];

        stmt.append(SELECT);
        stmt.append(field.getColumnName());
        stmt.append(FROM);
        stmt.append(cld.getFullTableName());
        appendWhereClause(cld, false, stmt);

        sql = stmt.toString();
    }
    return sql;
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:26,代码来源:SqlExistStatement.java

示例8: buildManyToManyReferences

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private void buildManyToManyReferences(ClassDescriptor cd, CollectionDescriptor collectionDescriptor,
                                        Object keys[], Vector columns)
 {
     if(cd.isAbstract() || cd.isInterface())
     {
logger.debug( "Skip foreign key build for MtoM, found abstract base class or interface " + cd.getClassNameOfObject() );
         return;
     }
     StringBuffer buffer = new StringBuffer(256);
     buildForeignKeyHeader(cd.getFullTableName(), buffer);

     for (int i = 0; i < keys.length; i++) {
         String columnName = (String) keys[i];

         FieldDescriptor foreignColumn = cd.getPkFields()[i];
         String foreignColumnName = foreignColumn.getPersistentField().getName();
         buildReferenceForColumn(buffer, columnName, foreignColumnName);
         FieldDescriptor fieldDescriptor = (FieldDescriptor)foreignColumn.clone();
         fieldDescriptor.setColumnName(columnName);
         columns.add(fieldDescriptor);
     }
     buffer.append("        </foreign-key>\n");

     addReferenceToTable(collectionDescriptor.getIndirectionTable(), buffer.toString());
 }
 
开发者ID:KualiCo,项目名称:ojb,代码行数:26,代码来源:TorqueForeignKeyGenerator.java

示例9: hasNullPKField

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * Detect if the given object has a PK field represents a 'null' value.
 */
public boolean hasNullPKField(ClassDescriptor cld, Object obj)
{
    FieldDescriptor[] fields = cld.getPkFields();
    boolean hasNull = false;
    // an unmaterialized proxy object can never have nullified PK's
    IndirectionHandler handler = ProxyHelper.getIndirectionHandler(obj);
    if(handler == null || handler.alreadyMaterialized())
    {
        if(handler != null) obj = handler.getRealSubject();
        FieldDescriptor fld;
        for(int i = 0; i < fields.length; i++)
        {
            fld = fields[i];
            hasNull = representsNull(fld, fld.getPersistentField().get(obj));
            if(hasNull) break;
        }
    }
    return hasNull;
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:23,代码来源:BrokerHelper.java

示例10: assertValidPkForDelete

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * returns true if the primary key fields are valid for delete, else false.
 * PK fields are valid if each of them contains a valid non-null value
 * @param cld the ClassDescriptor
 * @param obj the object
 * @return boolean
 */
public boolean assertValidPkForDelete(ClassDescriptor cld, Object obj)
{
    if(!ProxyHelper.isProxy(obj))
    {
        FieldDescriptor fieldDescriptors[] = cld.getPkFields();
        int fieldDescriptorSize = fieldDescriptors.length;
        for(int i = 0; i < fieldDescriptorSize; i++)
        {
            FieldDescriptor fd = fieldDescriptors[i];
            Object pkValue = fd.getPersistentField().get(obj);
            if (representsNull(fd, pkValue))
            {
                return false;
            }
        }
    }
    return true;
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:26,代码来源:BrokerHelper.java

示例11: ojbAdd

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
public void ojbAdd(Object anObject)
{
	if (anObject != null)
	{
		ClassDescriptor cd = MetadataManager.getInstance().getRepository().getDescriptorFor(anObject.getClass());
           FieldDescriptor[] fields = cd.getPkFields();
           if(fields.length > 1 || fields.length == 0)
           {
               throw new MetadataException("ManageableHashMap can only be used for persistence capable objects with" +
                       " exactly one primiary key field defined in metadata, for " + anObject.getClass() + " the" +
                       " PK field count is " + fields.length);
           }
           else
           {
               Object key = fields[0].getPersistentField().get(anObject);
		    put(key,anObject);
           }
	}
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:20,代码来源:ManageableHashMap.java

示例12: listPrimaryKeyFieldNames

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 *
 * This method returns a list of primary key field names.  This method uses the CacheNoCopy caching method.
 * "NoCopy" is the faster of the caching annotations, but because it does not make a copy the list that is
 * returned must not be modified.  To enforce this the returned list is wrapped in a Collections.unmodifiableList
 * method.  This will cause an exception to be thrown if the list is altered.
 *
 * @param clazz
 * @return unmodifiableList of field names.  Any attempt to alter list will result in an UnsupportedOperationException
 */
public List listPrimaryKeyFieldNames(Class clazz) {
       // Legacy OJB
       List fieldNamesLegacy = new ArrayList();
       ClassDescriptor classDescriptor = getClassDescriptor(clazz);
       FieldDescriptor keyDescriptors[] = classDescriptor.getPkFields();

       for (int i = 0; i < keyDescriptors.length; ++i) {
           FieldDescriptor keyDescriptor = keyDescriptors[i];
           fieldNamesLegacy.add(keyDescriptor.getAttributeName());
       }
       return fieldNamesLegacy;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:23,代码来源:PersistenceServiceStructureImplBase.java

示例13: getPrimaryKeys

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getPrimaryKeys(java.lang.Class)
 */

@Override
public List getPrimaryKeys(Class clazz) {
	List pkList = new ArrayList();
	ClassDescriptor classDescriptor = getClassDescriptor(clazz);
	FieldDescriptor keyDescriptors[] = classDescriptor.getPkFields();
	for (int i = 0; i < keyDescriptors.length; ++i) {
		FieldDescriptor keyDescriptor = keyDescriptors[i];
		pkList.add(keyDescriptor.getAttributeName());
	}
	return pkList;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:16,代码来源:PersistenceStructureServiceOjbImpl.java

示例14: processReferenceField

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private List<Expression> processReferenceField(String enclosingClass, String fieldName, String mappedClass, ObjectReferenceDescriptor ord) {
    final List<Expression> joinColumns = new ArrayList<Expression>();
    final Collection<String> fks = ord.getForeignKeyFields();
    if (fks == null || fks.isEmpty()) {
        LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has a reference descriptor for " + fieldName
                + " but does not have any foreign keys configured");
        return joinColumns;
    }

    final Collection<String> pks = OjbUtil.getPrimaryKeyNames(mappedClass, descriptorRepositories);

    //make sure it isn't a one to one
    if (!(pks.containsAll(fks) && fks.containsAll(pks)) && !pks.isEmpty()) {

        final ClassDescriptor cd = OjbUtil.findClassDescriptor(mappedClass, descriptorRepositories);
        final ClassDescriptor icd = getItemClassDescriptor(enclosingClass, fieldName, mappedClass, ord);
        final FieldDescriptor[] fkDescs = ord.getForeignKeyFieldDescriptors(cd);
        final FieldDescriptor[] pkDescs = icd.getPkFields();

        if (fkDescs.length != pkDescs.length) {
            LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has a collection descriptor for " + fieldName
                    + " with an foreign key that is not joined to all of the primary key fields. This is not supported in JPA.");
        }

        for (int i = 0; i < fkDescs.length; i ++) {
            joinColumns.add(createJoinColumn(fkDescs[i], pkDescs[i]));
        }
    }
    return joinColumns;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:31,代码来源:AbstractJoinColumnResolver.java

示例15: processCollectionField

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private List<Expression> processCollectionField(String enclosingClass, String fieldName, String mappedClass, CollectionDescriptor cld) {
    final List<Expression> joinColumns = new ArrayList<Expression>();

    if (!cld.isMtoNRelation()) {
        final Collection<String> fks = cld.getForeignKeyFields();
        if (fks == null || fks.isEmpty()) {
            LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has a collection descriptor for " + fieldName
                    + " but does not have any inverse foreign keys configured");
            return joinColumns;
        }

        final ClassDescriptor cd = OjbUtil.findClassDescriptor(mappedClass, descriptorRepositories);
        final ClassDescriptor icd = getItemClassDescriptor(enclosingClass, fieldName, mappedClass, cld);
        final FieldDescriptor[] fkDescs =  cld.getForeignKeyFieldDescriptors(icd);
        final FieldDescriptor[] pkDescs = cd.getPkFields();

        if (fkDescs.length != pkDescs.length) {
            LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has a collection descriptor for " + fieldName
            + " with an inverse foreign key that is not joined to all of the primary key fields.  This is not supported in JPA.");
        }

        for (int i = 0; i < fkDescs.length; i ++) {
            joinColumns.add(createJoinColumn(pkDescs[i], fkDescs[i]));
        }
    }
    return joinColumns;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:28,代码来源:AbstractJoinColumnResolver.java


注:本文中的org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。