protected ValueReadQuery buildSelectQuery() { ValueReadQuery query = new ValueReadQuery(); query.addArgument(getNameFieldName()); StringWriter writer = new StringWriter(); writer.write("SELECT " + getCounterFieldName()); writer.write(" FROM " + getQualifiedTableName()); writer.write(" WHERE " + getNameFieldName()); writer.write(" = #" + getNameFieldName()); query.setSQLString(writer.toString()); return query; }
/** * INTERNAL: Get the ref for the object. This is required for use by Refs, there might be a better * way to do it when objID are supported. (i.e. getting it from the object or identity map). */ public Ref getRef(Object object, AbstractSession session) { SQLSelectStatement statement = new SQLSelectStatement(); statement.addTable(getTables().firstElement()); // Assumed only one for obj-rel descriptors. statement .getFields() .addElement(new org.eclipse.persistence.expressions.ExpressionBuilder().ref()); statement.setWhereClause( getObjectBuilder().buildPrimaryKeyExpressionFromObject(object, session)); statement.setRequiresAliases(true); statement.normalize(session, this); ValueReadQuery valueQuery = new ValueReadQuery(); valueQuery.setSQLStatement(statement); valueQuery.prepareCall(session, new DatabaseRecord()); // Must return unwrapped Ref on WLS. valueQuery.getCall().setIsNativeConnectionRequired(true); Ref ref = (Ref) session.executeQuery(valueQuery); return ref; }