}
CqlColumn[] readColumns = readColumns(persistOptions);
CqlColumn[] pkColumns = primaryKeyColumnsVariable[primaryKey.length - partitionKeyColumns.length];
Binder binder = new Binder(readColumns, false, pkColumns, null, true);
int idx = 0;
try {
for (CqlColumn col : pkColumns) {
col.dataTypeMapper.fromObject(binder, col, primaryKey[idx++]);
}
} catch (Throwable t) {
throw new RuntimeException("Invalid primary key element "+Arrays.toString(primaryKey), t);
}
PreparedStatement pstmt = preparedStatements.statementFor(session, PreparedStatements.StatementType.SELECT, binder, persistOptions);
BoundStatement bStmt = pstmt.bind();
statementOptions.applyRead(bStmt, readConsistencyLevel, persistOptions);
PersistOption.forBoundStatement(persistOptions, bStmt);
idx = binder.bindColumns(0, bStmt);
PersistOption.LimitOption.apply(bStmt, persistOptions, idx);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Submitting load for {} : {}", type, bStmt.preparedStatement().getQueryString());