java - 使用不在 JpaRepository 中的 @Query 注释

标签 java spring hibernate jpa spring-data-jpa

我在数据库中有 User 实体,它是 JPA 实体。我还有 UserDescription 类,该类在数据库中没有表。我想使用不同的表和实体实例化 UserDescription 类。但我不想为此使用 EntityManager。所以我找到了可以在@Query注释中使用的SELECT new ...模式,它是完美的解决方案。

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

此外,我尝试使用使用 @Query 注释进行注释的方法声明创建 POJO 接口(interface)(UserDescriptionService),尝试在 Controller ()中使用此接口(interface)创建字段,并用 Autowired 对其进行注释,当然得到了:

Field userDescriptionService in UserController required a bean of type 'UserDescriptionService' that could not be found.

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

最佳答案

正如 M. Deinum 已经提到的。您不必只返回 JpaRepositories 中的实体。

您可以使用构造函数表达式(又名选择新)或投影。 在此处查找有关预测的更多信息:

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

关于java - 使用不在 JpaRepository 中的 @Query 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51851417/

相关文章:

Java GUI 读取具有上述路径的文件

java - 限制与服务器的连接数

java - 创建用于注释字段的常量

java - 带有数据透视表的高级 JPA

java - spring 如何在运行时获取接口(interface)的实现

java - 如何从LAN口读取数据并显示在小程序上?

java - UTF字符串到InputStream的转换

java - 通过注解进行依赖注入(inject)

Java,Hibernate getList 不工作

java - Hibernate:是否可以在事务提交时自动清除 session ?