spring-data-jpa icon indicating copy to clipboard operation
spring-data-jpa copied to clipboard

Collections cannot be used in dto projections [DATAJPA-1785]

Open spring-projects-issues opened this issue 8 years ago • 2 comments

Anthony Foulfoin opened DATAJPA-1785 and commented

Hi,

I'm facing an issue when I try to use a dto projection with a spring repository

class CarProjection {
    String name;
    List<Color> colors;

    public CarProjection (String name, List<color> colors) {
        ...
    }    
}

class Car{
    String name;

    @OneToMany(mappedBy = "car")
    List<Color> colors;
}

class Color{
     @ManyToOne
     Car car;
}

The method signature in the repository :

Slice<CarProjection> findAllBy(Pageable page);

I get an exception when I call it:

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [CarProjection]. Expected arguments are: java.lang.String, Color[........]

The expected second argument in the stacktrace is a Color, while I expected a List.

If I use an interface instead of a dto, it works as expected:

interface CarProjection {
    String getName();
    List<Color> getColors();
}

But i'm facing some gson serialization problems with interface projections, maybe because of the spring proxy so I can't use this workaround


Issue Links:

  • DATAJPA-1786 Projections on collection properties are not distinct

1 votes, 3 watchers

spring-projects-issues avatar Apr 05 '17 08:04 spring-projects-issues

Kamil commented

I think, that here is simmilar issue: https://jira.spring.io/browse/DATACMNS-969

spring-projects-issues avatar Jun 27 '17 12:06 spring-projects-issues

Mark Paluch commented

Moved to Spring Data JPA

spring-projects-issues avatar Sep 23 '20 13:09 spring-projects-issues