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

时间:2013-01-04 11:14:01

标签: java-ee jpa persistence

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

实体的一部分:

@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;
}

DAO-层:

@Override
public Operation read(int id) {
    return this.em.find(Operation.class, id);
}

服务层:

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

查看层:

Operation o = opService.getOperation(operationId);

在视图层没有operation.getParticipations();的情况下使用此参数 - List缺失。如果我添加了愚蠢的代码,那么该对象将被正确转发并且参与列表可用。

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

编辑:对象的所有其他属性/字段都正确转发(可能很重要)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

@OneToMany默认FetchTypeLAZY

并且LAZY策略是持久性提供程序的提示,即数据在首次访问时应该被懒惰地获取。