【发布时间】:2013-08-28 12:43:11
【问题描述】:
当我尝试从数据库中检索一些实体时,我遇到了一个奇怪的问题。实体所在的表只有 4 行。当我尝试选择所有行时,我得到一个列表,其中第一个和最后一个元素加载正确,但是,第二个和第三个的所有属性都为空。这是我的调试控制台的打印:
实体很简单,如下所示:
@Entity
@Table(name = "Empresa")
public class Empresa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_EMPRESA")
private Integer idEmpresa;
@Basic(optional = false)
@Column(name = "NOME_EMPRESA")
@OrderColumn
private String nomeEmpresa;
@Column(name = "CNPJ")
private String cnpj;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iDEmpresa", fetch = FetchType.LAZY)
private List<Cadastro> cadastroList;
}
如果你想知道我是如何检索实体的,这里是代码:
@Override
public List<T> recuperarTodos() {
Query query = entityManager.createQuery(criarQueryRecuperarTodos());
limitarQuantidadeDeRegistros(query);
return query.getResultList();
}
private String criarQueryRecuperarTodos() {
StringBuilder builder = new StringBuilder("SELECT e FROM ");
builder.append(classe.getSimpleName());
builder.append(" e");
builder.append(criarParametrosOrdenacao());
return builder.toString();
}
【问题讨论】:
-
那些是代理。尝试将您的 fetch 设置为
EAGER。 -
在这种情况下这是不可接受的,请注意检索到的第一个实体的 cadastroList 包含 1478 个实体。如果我在此使用 Eager,我将遇到性能问题,一旦 Cadastro 实体是一个复杂的实体并且与 fetch Eager 有一些关系
-
你解决了吗?我也面临同样的问题!
标签: java hibernate jpa-2.0 javassist