Exemplo n.º 1
0
  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;
  }