簡體   English   中英

如何僅從關系中檢索屬性而不是實體?

[英]How can I retrieve only an attribute instead of the Entity from a relationship?

我正在Netbeans中從事Maven Web應用程序項目,我有以下課程:

@Entity
@Table(name = "departments")
public class Department{
    @Id
    private Integer departmentId;
    @Column(name = "department_name")
    private String departmentName;
}

和:

@Entity
@Table(name = "employees")
public class Employee {
    @Id
    private Integer employeetId;
    @Column(name = "employee_name")
    private String employeeName;
    @JoinColumn(name = "department_id", referencedColumnName = 
    "department_id")
    @ManyToOne(optional = false)
    private Departments department;
}

我的休息API返回此:

{
    employeeId:1, 
    employeeName:"Jhon",
    department: { departmentId:1, departmentName:"IT"}
}

我想要的輸出是:

 {
    employeeId:1, 
    employeeName:"Jhon",
    department: "IT"
 }

我嘗試返回DTO,但得到一個空的json:

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<EmployeeDto> findAllEmployees() {
    CriteriaQuery cq = entityManager.getCriteriaBuilder().createQuery(Employee.class);
    cq.select(cq.from(Employee.class));
    List<Employee> employees = entityManager.createQuery(cq).getResultList();
    List<EmployeeDto> employeesDto = new ArrayList<>();

    for (Employee employee : employees) {
        EmployeeDto employeeDto = new EmployeeDto();
        employeeDto.employeeId = employee.getEmployeedId();
        employeeDto.department = employee.getDepartment().getDepartmentName();

        employeesDto.add(employeeDto);
    }
    return   employeesDto;

DTO:

Class EmployeeDto{Integer employeeId; String employeeName; String department}

使用命名查詢

@Entity
@Table(name="employees")
@NamedQueries({
    @NamedQuery(
        name = "getDesiredUser",
        query = "SELECT e.employeeId, e.employeeName, d.departmentName FROM employees AS e INNER JOIN departments as d ON e.department_id = d.departmentId"),

})
public class Employee {
    @Id
..
}

您可以在NamedQueries上找到更多信息:

https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-creating-database-queries-with-named-queries/

這是因為我得到了一個空的json:我的Dto類沒有公共的獲取器和設置器。 解決方案是公開Dto字段或添加公共獲取者/設置者。

Class EmployeeDto{
    public Integer employeeId; 
    public String employeeName; 
    public String department;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM