jpa @Query 指定查询字段返回对象
时间: 2023-10-02 07:07:51 浏览: 82
让JPA的Query查询接口返回Map对象的方法
如果你想使用 `@Query` 注解来自定义 JPQL 查询语句,并且只查询实体类中的部分字段,可以使用如下方式:
```java
@Query("SELECT new com.example.dto.UserDto(u.id, u.username) FROM User u WHERE u.id = :id")
UserDto findUserDtoById(@Param("id") Long id);
```
上述代码中,我们使用 `SELECT new` 的方式来指定返回一个 `UserDto` 对象,然后在 `UserDto` 的构造函数中指定要查询的实体类字段,这样就可以只返回需要的字段了。注意,这里的 `UserDto` 类需要有一个带参数的构造函数,用于接收查询结果。同时,这里的 `User` 对象需要与实体类的名称保持一致。
另外需要注意的是,如果使用了 `SELECT new` 语句,那么查询结果将不再是一个实体类对象,而是一个自定义的对象,因此需要在返回类型中指定自定义对象的类名。
阅读全文