我从开发人员那里继承了一些似乎使用了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
?
这可能适用于所有版本,还是隐藏的黑客使用风险?
答案 0 :(得分:1)
在Spring Data JPA(您似乎在这里使用)中,您可以简单地使用具有适当getter的接口作为投影目标。
请参阅the documentation有关此事(特别是&#34;示例62.简单投影&#34;)。
文档中的任何地方似乎都没有@Projection
注释。