在jax-rs中响应之前加载实体

时间:2015-07-07 13:28:59

标签: jpa jax-rs

有一种方法可以在没有加载子实体的情况下响应jax-rs中的实体吗?因为当我尝试使用JPA 2实体生成响应时,我得到以下错误:

failed to lazily initialize a collection of role: mypackage.Project.tags, could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->mypackage.Project["tags"])

我的实体:

@Entity
@Table(name="TB_PROJECT"
public class Project {      

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="COD_PROJECT")
    private String codProject;

    @OneToMany
    @JoinColumn(name="COD_PROJECT")
    private List<Tag> tags;

}

我的回答:

@Path("/projects")
public class ConsultaSolicFomentoResource {


    @Context 
    private HttpServletRequest requestContext;  

    @EJB
    private ProjectServiceLocal projectServiceLocal;

    @GET
    @Path("/list") 
    @Produces(MediaType.APPLICATION_JSON)
    public Response listProjects() {
        List<Project> projects = projectServiceLocal.listProjects();
        return Response.ok(projects).build(); 
    }

}

1 个答案:

答案 0 :(得分:0)

Yuo可能需要返回DTO而不是Response中的实际Business / doamin实体。 您的ProjectDTO实例列表将从返回的项目中初始化,只有您想要返回给客户端的属性才会被复制到DTO中。