在JpaRepository中不使用@Query注释

时间:2018-08-15 00:32:56

标签: java spring hibernate jpa spring-data-jpa

我在数据库中有User实体,它是JPA实体。我也有UserDescription类,该类在数据库中没有表。我想使用不同的表和实体实例化UserDescription类。但是我不想使用EntityManager。因此,我发现可以在SELECT new ...批注中使用的@Query模式,这是完美的解决方案。

但是我有一个简单的问题-我需要注释一些应该在接口中的方法声明。通常,它是在JpaRepository中完成的,但是UserDescription-不是实体,所以我不能这样做!

此外,我尝试使用方法声明创建POJO接口(UserDescriptionService),该方法声明使用@Query批注进行注释,尝试在controller()中使用此接口创建字段,并使用{{ 1}},当然得到了:

  

UserController中的字段userDescriptionService需要一个类型为bean的bean   找不到“ UserDescriptionService”。

那么,如何在Autowired中使用@Query注释,或者如何为非实体类获得JpaRepository

1 个答案:

答案 0 :(得分:1)

正如Deinum先生已经提到的。您不会被迫仅返回JpaRepositories中的实体。

您可以使用构造函数表达式(也可以选择new)或投影。 在此处找到有关投影的更多信息:

https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#projections