Error on record: The alias [arrayField[1].field] cannot be used because it contains illegal characters

Getting this error after deployment, but in previous environment works fine, any clue? 

An error occurred while applying the context for the dataStoreEntityName related action [identifier=1,534]. Details: The alias [arrayField[1].field] cannot be used because it contains illegal characters. The alias must contain only letters, numbers, and underscores, and must start with a letter.

  Discussion posts and replies are publicly visible

  • May i know the context? whether you are trying to use smart service or any other functions?

  • that array field in the CDT is a nested CDT. I already came up with a workaround:

    replaced this

    rf!arrayField[1].field

    with this

     index(index(rf!arrayField,1,null),"field",null)

    but still wonder why I am getting the error using the first syntax

  • The CDT which you are trying to fetch is empty which has no structure defined in data

    for example: if output empty cdt is like this

    field1:

    field2:

    field3:

    then Dot notation will work

    If output cdt is empty {} without any structure, then Dot notation fails. Index function has default value functionality within it to handle this situation and so it works in index function and not in Dot notation

  • it is a really good argument but the CDT is not empty, I am able to see the field value in the nested cdt if I pass it as parameter to an interface by using the index function

  • <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:com:appian:types" targetNamespace="urn:com:appian:types">
      <xsd:complexType name="CDT_NAME">
        <xsd:annotation>
          <xsd:appinfo source="appian.jpa">@Table(name="TABLE_NAME")</xsd:appinfo>
          <xsd:documentation><![CDATA[TABLE_NAME]]></xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
          <xsd:element name="txt_prop" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_PROP", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_nom" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_NOM", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_regio" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_REGIO", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_zona" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_ZONA", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_nom_ejec" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_NOM_EJEC", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_nom_anlst" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_NOM_ANLST", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_anio" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_ANIO", columnDefinition="VARCHAR2(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_buc" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_BUC", columnDefinition="CHAR(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="txt_gpo" nillable="true" type="xsd:string">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="TXT_GPO", columnDefinition="CHAR(200)")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="id_prop" nillable="true" type="xsd:int">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Column(name="ID_PROP", columnDefinition="NUMBER") @JoinColumn(name="ID_PROP")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="id_prop_det" nillable="true" type="xsd:int">
            <xsd:annotation>
              <xsd:appinfo source="appian.jpa">@Id @Column(name="ID_PROP_DET", nullable=false, columnDefinition="NUMBER") @SequenceGenerator(name="SQ_TABLE_NAME", sequenceName="SQ_TABLE_NAME") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SQ_TABLE_NAME")</xsd:appinfo>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>

  • 0
    Certified Lead Developer
    in reply to martincamacho

    Best to not use dot notation ever, and use index or property functions.  Also, sometimes array[1] will return the character at index 1 if array is a string.  This gets confusing if your array is actually returning only 1 element which can be interpreted as a string. 

    I shy away from [] always and use index or property.