我已经浏览了许多链接,例如:Spring JPA selecting specific columns,但这是我的模型。我正在使用 Spring Boot 2.0.0
@Entity
@Table
public class Employee{
@Id
private Long employeeId;
....
....
@OneToMany(mappedBy = "departmentId", cascade = CascadeType.ALL)
private List<Department> departments;
..
...
...
...
...
...
}
我写过类似的项目
public class EmployeeDto{
public Long getEmployeeId();
public List<Department> getDepartments();
}
当我开发 JPARepositoryQuery 时,我得到了整个对象。事实上,我只需要EmployeeId 和departmentIds 列表就可以了。
@Query("SELECT s.employeeId, s.departments FROM Employee s WHERE s.employeeId = :employeeId")
EmployeeDto findProjectionByEmployeeId(@Param("employeeId") Long employeeId);
我们如何限制只能获取两个字段?
答案 0 :(得分:0)
答案很简单:那是不可能的。
您的查询结果将是一个带有 id 和 Department 的所有字段的笛卡尔积。
答案 1 :(得分:0)
您已经知道employeeId
,所以只需了解部门
@Query("SELECT empl.departments FROM Employee empl WHERE empl.employeeId = :employeeId")
List<Department> findDepartmentsByEmployeeId(@Param("employeeId") Long employeeId);