我正在尝试使用Spring Data REST(版本2.3.0.RELEASE)进行投影。我读了reference documentation,并收集到这些是我需要的部分:
JPA实体
@Entity
public class Project implements Serializable {
@Basic(optional = false)
@Column(name = "PROJECT_NAME")
private String projectName;
// ... lots and lots of other stuff
}
与该实体一起使用的存储库
@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> { }
用于检索该实体名称的投影
@Projection(name="names", types={Project.class})
public interface ProjectProjectionNamesOnly {
String getProjectName();
}
我希望能够选择性地仅检索项目名称列表,并且投影看起来非常适合这一点。因此,通过此设置,我在http://localhost:9000/projects/1?projection=names点击了我的端点。我收回了所有的属性和集合链接,但我希望只返回名称和自我链接。
我也查看过sample project on projections,但这个例子是摘录,看起来与投影不同,因为它是参考的不同部分。我尝试了它,但它无论如何都没有工作。
所以问题是这样的:你如何使用spring数据休息投影来检索实体的单个属性(及其自身链接)?
答案 0 :(得分:11)
看起来您的投影定义甚至没有被发现,因此如果您为HTTP请求选择它,它就不会被应用。
对于要自动发现的投影接口,需要将它们放在它们所绑定的域类型的包的相同或子包内。
如果您无法将该类型放入该位置,则可以通过调用RepositoryRestConfiguration
在….projectionConfiguration().addProjection(…)
上手动注册投影定义。
目前参考文档并没有真正提到这一点,但在未来的版本中已经有了获得this fixed的门票。