java - 在 Spring-JPA 应用程序中使用 JAXB 访问对象

标签 java spring jpa jaxb

请帮助我使用 JAXB 注释访问以下代码中的 Employee 对象。该应用程序是在 JPA SPRING 中开发的。我们无法访问子对象属性,即 Employee 属性

资源核心文件

@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name="resource")
@Entity
@Table(name = "resource")
public class Resource implements java.io.Serializable {


    private Integer resourceId;
    private String resourceCode;
    private String resourceName;
    private String resourceNumber;
    private Employee employee;


    public Resource() {
    }


    public Resource(Employee employee,String resourceCode, String resourceName,
            String resourceNumber
            ) {
        this.employee = employee;
        this.resourceCode = resourceCode;
        this.resourceName = resourceName;
        this.resourceNumber = resourceNumber;
    }


    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "resource_id", unique = true, nullable = false)
    public Integer getResourceId() {
        return this.resourceId;
    }

    public void setResourceId(Integer resourceId) {
        this.resourceId = resourceId;
    }

    @Column(name = "resource_code")
    public String getResourceCode() {
        return this.resourceCode;
    }

    public void setResourceCode(String resourceCode) {
        this.resourceCode = resourceCode;
    }

    @Column(name = "resource_number")
    public String getResourceNumber() {
        return this.resourceNumber;
    }

    public void setResourceNumber(String resourceNumber) {
        this.resourceNumber = resourceNumber;
    }

    @Column(name = "resource_name")
    public String getResourceName() {
        return this.resourceName;
    }

    public void setResourceName(String resourceName) {
        this.resourceName = resourceName;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "employee_id")
    public Employee getEmployee() {
        return this.employee;
    }

    public void setEmployee(Employee employee) {
        this.employee = employee;
    }

}

员工核心文件

@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name="employee")
@Entity
@Table(name = "employee")
public class Employee implements java.io.Serializable {


    private Integer employeeId;
    private String employeeCode;
    private String employeeName;
    private List<Resource> resources = new ArrayList<Resource>(0);



    public Employee() {
    }



    public Employee(String employeeCode, String employeeName,List<Resource> resources

            ) {
        this.employeeCode = employeeCode;
        this.employeeName = employeeName;
        this.resources = resources;
    }


    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "employee_id", unique = true, nullable = false)
    public Integer getEmployeeId() {
        return this.employeeId;
    }

    public void setEmployeeId(Integer employeeId) {
        this.employeeId = employeeId;
    }

    @Column(name = "employee_code")
    public String getEmployeeCode() {
        return this.employeeCode;
    }

    public void setEmployeeCode(String employeeCode) {
        this.employeeCode = employeeCode;
    }


    @Column(name = "employee_name")
    public String getEmployeeName() {
        return this.employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "employee")
    public List<Resource> getResources() {
        return this.resources;
    }

    public void setResources(List<Resource> resources) {
        this.resources = resources;
    }


}

最佳答案

您必须在 RESOURCE CORE FILE 的 getEmployee() 方法中使用 FetchType : Eager。延迟获取类型仅拉取父对象。渴望同时拉动两者。

关于java - 在 Spring-JPA 应用程序中使用 JAXB 访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378375/

相关文章:

java - sql中未使用JoinColumn名称

java - jasper 报告中显示多个条件水印

java - 如何使用 Spring WebFlux 构建响应式(Reactive)内存存储库?

java.lang.ClassCastException,通过 JNDI 查找获取 Entitymanager

java - org.hibernate.mapping.JoinedSubclass 无法转换为 org.hibernate.mapping.RootClass

java - 在java中填充列表的列表

java - AES 加密尝试失败 - 鉴于最终 block 可能未正确填充

java - 如何配置 sessionListener 使用 spring boot 1.x

mysql - 设置数据库分片 - 没有跨数据库查询

java - orphanRemoval=true 在 JPA 2.0 中如何工作