我嘗試從數據庫中檢索某些實體時遇到了一個奇怪的問題。實體所在的表格只有4行。當我嘗試選擇所有行時,我得到一個列表,第一個和最後一個元素加載正確,但是,第二個和第三個屬性都爲空。這裏是我的調試控制檯打印:爲什麼我要在結果集中獲取Javassist對象?
實體很簡單,你可以看到如下:
@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();
}
這些是代理。嘗試將您的抓取設置爲「EAGER」。 –
在這種情況下,這是不可接受的,請注意,檢索到的第一個實體的cadastroList包含1478個實體。如果我在這裏使用熱切的話,一旦Cadastro實體是一個複雜的實體,並且與渴望取得一些關係,我會遇到性能問題。 – brevleq
您是否解決了這個問題?我面臨同樣的問題! – lmo