Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 实体对象未正确转发到视图图层_Jakarta Ee_Jpa_Persistence - Fatal编程技术网

Jakarta ee 实体对象未正确转发到视图图层

Jakarta ee 实体对象未正确转发到视图图层,jakarta-ee,jpa,persistence,Jakarta Ee,Jpa,Persistence,对于我们的项目,我们有一个层次结构。DAO层与数据库通信并获取存储的实体。服务层与DAO层通信以获取实体并实现更复杂的方法。然后,视图层与服务层通信以获得所需的信息 实体的一部分: @Entity public class Operation implements Serializable { private Integer id; @GeneratedValue @Id public Integer getId() { return id; } public void setId(

对于我们的项目,我们有一个层次结构。DAO层与数据库通信并获取存储的实体。服务层与DAO层通信以获取实体并实现更复杂的方法。然后,视图层与服务层通信以获得所需的信息

实体的一部分:

@Entity
public class Operation implements Serializable {
private Integer id;

@GeneratedValue
@Id
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}
private List<Participation> participations;

@OneToMany
public List<Participation> getParticipations() {
    return participations;
}

public void setParticipations(List<Participation> participations) {
    this.participations = participations;
}
服务层:

@Override
public Operation getOperation(Integer operationId)
{
    Operation operation = operationDAO.read(operationId);
    //operation.getParticipations();
    return operation;
}
视图层:

Operation o = opService.getOperation(operationId);
在不使用
操作的情况下使用它。getParticipations()视图层上缺少参与列表。如果我添加了愚蠢的代码,那么对象将正确转发,并且参与列表可用

我无法向自己解释为什么对象转发不正确?你能帮助我吗?Thx提前


编辑:对象的所有其他属性/字段都已正确转发(请务必了解)

@OneToMany默认情况下是延迟加载的

用于
@OneToMany
默认
FetchType
延迟的


LAZY
策略是对持久性提供者的一个提示,即当数据第一次被访问时,应该延迟获取数据

您是否在视图层中收到LazyInitializationException?我检查了服务器日志,没有发现任何类似的错误。知道“Operation”的其他属性是否正确转发可能很重要。Thx,我添加了@OneToMany(fetch=FetchType.EAGER)。现在它工作了!
Operation o = opService.getOperation(operationId);