entities = new ArrayList<Object>();
MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(
m.getPersistenceUnit());
EntityType entityType = metaModel.entity(m.getEntityClazz());
List<AbstractManagedType> subManagedType = ((AbstractManagedType) entityType).getSubManagedType();
if (subManagedType.isEmpty())
{
entities.addAll(findByRelationQuery(m, colName, colValue, entityClazz, dataHandler));
}
else
{
for (AbstractManagedType subEntity : subManagedType)
{
EntityMetadata subEntityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata,
subEntity.getJavaType());
entities.addAll(findByRelationQuery(subEntityMetadata, colName, colValue,
subEntityMetadata.getEntityClazz(), dataHandler));
// TODOO:: if(entities != null)
}
}
}
else
{
SlicePredicate slicePredicate = new SlicePredicate();
slicePredicate.setSlice_range(new SliceRange(ByteBufferUtil.EMPTY_BYTE_BUFFER,
ByteBufferUtil.EMPTY_BYTE_BUFFER, false, Integer.MAX_VALUE));
IndexExpression ie = new IndexExpression(UTF8Type.instance.decompose(colName), IndexOperator.EQ,
ByteBuffer.wrap(PropertyAccessorHelper.getBytes(colValue)));
List<IndexExpression> expressions = new ArrayList<IndexExpression>();
expressions.add(ie);
IndexClause ix = new IndexClause();
ix.setStart_key(ByteBufferUtil.EMPTY_BYTE_BUFFER);
ix.setCount(Integer.MAX_VALUE);
ix.setExpressions(expressions);
ColumnParent columnParent = new ColumnParent(m.getTableName());
List<KeySlice> keySlices;
Connection conn = null;
try
{
conn = getConnection();
keySlices = conn.getClient()
.get_indexed_slices(columnParent, ix, slicePredicate, getConsistencyLevel());
}
catch (InvalidRequestException e)
{
if (e.why != null && e.why.contains("No indexed columns"))
{
return entities;
}
else
{
log.error("Error while finding relations for column family {} , Caused by: .", m.getTableName(), e);
throw new KunderaException(e);
}
}
catch (UnavailableException e)
{
log.error("Error while finding relations for column family {} , Caused by: .", m.getTableName(), e);
throw new KunderaException(e);
}
catch (TimedOutException e)
{
log.error("Error while finding relations for column family {} , Caused by: .", m.getTableName(), e);
throw new KunderaException(e);
}
catch (TException e)
{
log.error("Error while finding relations for column family {} , Caused by: .", m.getTableName(), e);
throw new KunderaException(e);
}
finally
{
releaseConnection(conn);
}
if (keySlices != null)
{
entities = new ArrayList<Object>(keySlices.size());
MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel(
m.getPersistenceUnit());
EntityType entityType = metaModel.entity(m.getEntityClazz());
List<AbstractManagedType> subManagedType = ((AbstractManagedType) entityType).getSubManagedType();
if (subManagedType.isEmpty())
{