private void setUniqueKeyData(StringBuilder qry, List<Object> val, Object o) throws SecurityException, NoSuchFieldException
	{
		boolean blnUkFlag = false;
		Class<?> c = o.getClass();
		Keys keys = c.getAnnotation(Keys.class);
		UniqueKey[] uniqueKeys = keys.uniqueKey();
		StringBuilder strWhereUkClause = new StringBuilder();
		List<Object> valUk = new ArrayList<Object>();
		String[] strFieldsName;
		Object objFieldValue;
		for (UniqueKey uniqueKey : uniqueKeys)
		{
			strFieldsName = uniqueKey.keys();
			blnUkFlag = false;
			strWhereUkClause.setLength(0);
			valUk = new ArrayList<Object>();
			int j = 0;
			for (; j < strFieldsName.length; j++)
			{
				log.debug("Key Name: " + strFieldsName[j]);
				objFieldValue = ReflectionUtils.getFieldValue(o, strFieldsName[j]);
				log.debug("KeyValue: " + objFieldValue);
				if (null != objFieldValue)
				{
					if (blnUkFlag)
					{
						strWhereUkClause.append(" and ");
					}
					blnUkFlag = true;
					strWhereUkClause.append(getColumnName(strFieldsName[j], o) + "=?");
					valUk.add(objFieldValue);
				}
				else
				{
					if (((Column)c.getDeclaredField(strFieldsName[j]).getAnnotation(Column.class)).nullable())
					{
						if (blnUkFlag)
						{
							strWhereUkClause.append(" and ");
						}
						blnUkFlag = true;
						strWhereUkClause.append(getColumnName(strFieldsName[j], o) + " is null");
					}
					else
					{
						log.debug("Nullable false");
					}
				}
			}
			if (j == strFieldsName.length && blnUkFlag)
			{
				break;
			}
		}
		qry.append(" Where " + strWhereUkClause.toString());
		val.addAll(valUk);
		
		
	}