@Override
public Map<String, Object> search(String query, Class<?> parentClass, EntityMetadata parentMetadata,
Class<?> childClass, EntityMetadata childMetadata, Object entityId, int start, int count)
{
String secIndexName = getIndexTableName(childMetadata);
String parentIdColumnName = ((AbstractAttribute) parentMetadata.getIdAttribute()).getJPAColumnName();
String childIdColumnName = ((AbstractAttribute) childMetadata.getIdAttribute()).getJPAColumnName();
String id = PropertyAccessorHelper.getString(entityId);
List<String> majorComponents = new ArrayList<String>();
majorComponents.add(secIndexName);
majorComponents.add(parentIdColumnName);
majorComponents.add(id);
Key majorKeyToFind = Key.createKey(majorComponents);
Iterator<KeyValueVersion> iterator = kvStore.multiGetIterator(Direction.FORWARD, 0, majorKeyToFind, null, null);
Map<String, Object> results = new HashMap<String, Object>();
while (iterator.hasNext())
{
KeyValueVersion keyValueVersion = iterator.next();
String minorKey = keyValueVersion.getKey().getMinorPath().get(0);
PropertyAccessor accessor = PropertyAccessorFactory
.getPropertyAccessor(childMetadata.getIdAttribute().getBindableJavaType());
byte[] idByteArr = keyValueVersion.getValue().getValue();
Object keyObj = accessor.fromBytes(childMetadata.getIdAttribute().getBindableJavaType(), idByteArr);
results.put(childIdColumnName + "|" + minorKey, keyObj);
}
return results;
}