Open naris opened 2 years ago
I have updated the project to use Spring-boot 2.6.2 & Hibernate 5.6.2.Final and it still throws the exception.
Here is an example of a native query that works (does NOT throw an Exception) using the same Entity class. However it only returns a few rows, much less than a page:
@NamedNativeQuery(name = "GrefFacts.findCvarLinksBySas",
query = "SELECT DISTINCT\n"+
" ( nvl(c.qvroot, ' ')\n"+
" || nvl(w.qvsufx, ' ') ) AS cvarName,\n"+
" sf.tk_bit AS tkBit\n"+
"FROM gref_facts gf,\n"+
" sdde_facts sf,\n"+
" sdd_c c,\n"+
" sdd_w w\n"+
"WHERE gf.script_variable_nm = :sasName\n"+
" AND gf.fact_id = sf.fact_id\n"+
" AND sf.cat_id = c.catid\n"+
" AND c.catid = w.catid\n"+
" AND sf.tk_word = w.tkword\n"+
"ORDER BY cvarname ASC, tkbit ASC",
resultSetMapping = "CvarLinkMapping"
)
@NamedNativeQuery(name = "GrefFacts.findCvarLinksBySas.count",
query = "SELECT count(*)\n"+
" FROM (\n"+
"SELECT DISTINCT\n"+
" (c.qvroot || w.qvsufx) AS cvarName,\n"+
" sf.tk_bit AS tkBit\n"+
"FROM gref_facts gf,\n"+
" sdde_facts sf,\n"+
" sdd_c c,\n"+
" sdd_w w\n"+
"WHERE gf.script_variable_nm = :sasName\n"+
" AND gf.fact_id = sf.fact_id\n"+
" AND sf.cat_id = c.catid\n"+
" AND c.catid = w.catid\n"+
" AND sf.tk_word = w.tkword\n"+
")"
)
@SqlResultSetMapping(name = "CvarLinkMapping",
classes=@ConstructorResult(
targetClass = com.epsilon.metadater.domain.CvarLink.class,
columns = {
@ColumnResult(name = "cvarName",type = String.class),
@ColumnResult(name = "tkBit",type = Integer.class),
}
))
@Query(nativeQuery = true)
List<CvarLink> findCvarLinksBySas(@Param("sasName") String sasName);
@Query(nativeQuery = true)
Page<CvarLink> findCvarLinksBySas(@Param("sasName") String sasName,
Pageable pageable);
public class CvarLinksApiDelegateImpl implements CvarLinksApiDelegate
{
private final GrefFactsRepository grefFactsRepository;
public ResponseEntity<List<CvarLink>> getCvarLinks(String sasname,
Pageable pageable,
Boolean unpaged)
{
Page<CvarLink> page = grefFactsRepository.findCvarLinksBySas(sasname, pageable);
}
}
I have asked this question in stack overflow.
However, since this really looks like a bug in spring I am also creating this issue:
I am using Java 11 , Spring-boot 2.4.7, Hibernate 5.4.32 (& jhipster & openapi) with an oracle database in a project and a couple of my repository
findAll()
methods throw an "ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0" exception when calling them with aPagable
argument (However, other classes using the same pattern do not). Calling a version of thefindAll()
method without thePageable
works.Here is an example of one that throws this exception:
and this is the Exception: