使用不带注释的投影@Projection

时间:2017-09-07 12:23:55

标签: java spring annotations projection

情况

我从开发人员那里继承了一些似乎使用了spring的无证功能的代码。

具体而言,它与使用@projection功能相关,而不实际注释interface

具体示例如下:

public interface DirType extends KeyValInterface  {
    @Value("#{target.id}") String getId();
    @Value("#{target.code}") String getText();
}

根据官方文档,这不应该有效,但确实如此。

public interface DirTypeRepository extends JpaRepository<ABDirType, Long> {
    List<DirType> findAllSummarizedBy(); 
}

因此,存储库的方法findAllSummarizedBy()实际上是在发送DirType的列表。

正在使用@Value注释进行映射,但没有@Projection注释。

Entity类如下:

@Data @Entity @Table(name="dir_type") @AllArgsConstructor @NoArgsConstructor
    public static class ABDirType {

        private @Id @GeneratedValue Long id;
        private String code;
    }

问题

是否有人有关于此Projections相关未记录功能的更多信息,而未将该界面注释为@Projection

这可能适用于所有版本,还是隐藏的黑客使用风险?

1 个答案:

答案 0 :(得分:1)

在Spring Data JPA(您似乎在这里使用)中,您可以简单地使用具有适当getter的接口作为投影目标。

请参阅the documentation有关此事(特别是&#34;示例62.简单投影&#34;)。

文档中的任何地方似乎都没有@Projection注释。