2016-10-03 69 views
0

我已經實現了一個小示例項目來說明我遇到的問題。它位於在這裏:​​@Projection not working

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

我想要做的就是創造同一實體的幾個@Projection的:

@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(); 
} 

並利用它們來獲得或多或少實體通過調用信息(帶和不帶引號):

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

但它在響應中沒有什麼區別,就像它使用默認方式顯示實體信息。

我不知道我在做什麼錯。歡迎任何幫助。

回答

2

請參閱以下內容。您的Projection定義與相應的實體在同一個包(或子包)中。

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

如何春季數據REST發現投影定義?

任何@Projection在與您的實體 定義(或其中一個子包)相同的包中找到的接口已註冊。

您可以通過 RepositoryRestConfiguration.getProjectionConfiguration().addProjection(…)手動註冊。

無論在哪種情況下,與投影的接口必須具有註釋的 @Projection註釋。