我在数据库中有User
实体,它是JPA实体。我也有UserDescription
类,该类在数据库中没有表。我想使用不同的表和实体实例化UserDescription
类。但是我不想使用EntityManager。因此,我发现可以在SELECT new ...
批注中使用的@Query
模式,这是完美的解决方案。
但是我有一个简单的问题-我需要注释一些应该在接口中的方法声明。通常,它是在JpaRepository
中完成的,但是UserDescription
-不是实体,所以我不能这样做!
此外,我尝试使用方法声明创建POJO接口(UserDescriptionService
),该方法声明使用@Query
批注进行注释,尝试在controller()中使用此接口创建字段,并使用{{ 1}},当然得到了:
UserController中的字段userDescriptionService需要一个类型为bean的bean 找不到“ UserDescriptionService”。
那么,如何在Autowired
中使用@Query
注释,或者如何为非实体类获得JpaRepository
?
答案 0 :(得分:1)
正如Deinum先生已经提到的。您不会被迫仅返回JpaRepositories中的实体。
您可以使用构造函数表达式(也可以选择new)或投影。 在此处找到有关投影的更多信息:
https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#projections