在 jax-rs 响应之前加载实体
Load entities before response in 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();
}
}
Yuo 可能需要 return DTO 而不是响应中的实际 Business/doamin 实体。
您的 ProjectDTO 实例列表将从 returned 项目初始化,只有您想要 return 给客户端的属性会被复制到 DTO 中。
有一种方法可以在没有加载子实体的情况下响应 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();
}
}
Yuo 可能需要 return DTO 而不是响应中的实际 Business/doamin 实体。 您的 ProjectDTO 实例列表将从 returned 项目初始化,只有您想要 return 给客户端的属性会被复制到 DTO 中。