Julio Villane
Julio Villane

Reputation: 1034

@Projection not working

I've implemented a little sample project to illustrate the problem I have. It's located here:

https://github.com/jvillane/spring-boot-hateoas-rest

What i'm trying to do is creating several @Projection's of the same Entity:

@Projection(name = "S", types = User.class)
public interface UserS {
    String getName();
}

@Projection(name = "M", types = User.class)
public interface UserM {
    String getName();
    String getDni();
}

@Projection(name = "L", types = User.class)
public interface UserL {
    String getName();
    String getDni();
    Country getCountry();
}

And using them to obtain more or less Entity information by calling (with and without quotes):

http://localhost:8080/api/users/1?projection=S
http://localhost:8080/api/users/1?projection=M
http://localhost:8080/api/users/1?projection=L

But it doesn't make a difference in the response, it's like it's using the default way to show the Entity info.

I don't know what i'm doing wrong. Any help is welcome.

Upvotes: 3

Views: 3492

Answers (2)

Mounir bkr
Mounir bkr

Reputation: 1665

your class "entities", and your "interface" of Projection corresponding to your entitie must be in some package. for your case : entitie class UserS, and interface(Projection) USerS , must be in some package

Upvotes: 0

Alan Hay
Alan Hay

Reputation: 23246

See the following. Is your Projection definition in the same package (or subpackage) as the corresponding entity.

http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts.projections

How does Spring Data REST finds projection definitions?

Any @Projection interface found in the same package as your entity definitions (or one of it’s sub-packages) is registered.

You can manually register via RepositoryRestConfiguration.getProjectionConfiguration().addProjection(…).

In either situation, the interface with your projection MUST have the @Projection annotation.

Upvotes: 8

Related Questions