Skip to content

Projection Not working for Array Of Object [DATACMNS-1656] #2079

Closed as not planned
@spring-projects-issues

Description

@spring-projects-issues

vr025 opened DATACMNS-1656 and commented

We are using Projection to select just single Column that is String Array (String[]) and it is falling with Index out of bound exception.

 

 

Here is my table:

     create table IF NOT EXISTS ORGANIZATION (
          uuid uuid not NULL PRIMARY KEY,
          name varchar(127) not NULL,
           appliance_tags varchar(255)[]
            constraint name_key unique (name)
       );

 

Here is my original entity mapping:

@Entity
@TypeDefs(

{               @TypeDef( name = "string-array", typeClass = StringArrayType.class ),                      @TypeDef( name = "pgsql_enum", typeClass = PostgreSQLEnumType.class)                     }

)
@Table(name = "organization")
@XmlRootElement(name = "organization")
@JsonInclude(Include.NON_EMPTY)
public class Organization

@Column(name = "name")
private String name;

 

@Id
@Column(name = "uuid")
private UUID uuid;


@Type( type = "string-array" )
@Column(name = "appliance_tags")
private String [] applianceTags;

 

//getters and setters for the above fields

  

 

 

Here is Projection Interface:

@Projection(name="appliacneTags", types = \{Organization.class})
public interface OrgTag

{ public String[] getApplianceTags(); }

 

Repository Query:

@Query(value = "select org.applianceTags from Organization as org")
public List<OrgTag> findAllTags();

 

 

Error Logs :

java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:458)
at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.toMap(ResultProcessor.java:310)
at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.getProjectionTarget(ResultProcessor.java:298)
at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:285)
at org.springframework.data.repository.query.ResultProcessor$ChainingConverter$1.convert(ResultProcessor.java:210)
at org.springframework.data.repository.query.ResultProcessor$ChainingConverter.convert(ResultProcessor.java:221)
at org.springframework.data.repository.query.ResultProcessor.processResult(ResultProcessor.java:152)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:133)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:118)

Affects: 2.2.4 (Moore SR4)

Reference URL: https://github.com/spring-projects/spring-data-commons/blob/master/src/main/java/org/springframework/data/repository/query/ResultProcessor.java

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions