Olá Pessoal, Preciso de uma ajuda nesse código referente a melhor forma de retornar dados de uma consulta JPQL abaixo. Eu preciso especificamente de dois campos de objetos relacionados, mas não estou certo se é melhor pratica retornar o objeto somente com dois campos alimentados.
public LocalDE localizaPorItemEstoqueDeposito(final BigInteger ItemId,
final BigInteger estoqueId,
final BigInteger depositoId){
StringBuilder sql = new StringBuilder();
sql.append(" SELECT ")
.append(" a.bkLocationC, ")
.append(" b.bkStockTypeC ")
.append(" FROM LocalDE c ")
.append(" JOIN c.partsXWarehouseDE d ")
.append(" JOIN c.depositoDE a ")
.append(" JOIN c.tipoDepositoDE b ")
.append(" WHERE ")
.append(" d.ItemId = :ItemId AND")
.append(" d.estoqueId = :estoqueId AND")
.append(" d.bkdepositoId = :depositoId ");
TypedQuery<LocalDE> query = this.entityManager().createQuery(sql.toString(), LocalDE.class);
query.setParameter("ItemId", ItemId);
query.setParameter("estoqueId", estoqueId);
query.setParameter("depositoId", depositoId);
@SuppressWarnings("unchecked")
List lstItemxEstoquexDeposito = query.getResultList();
java.util.Iterator it = lstItemxEstoquexDeposito.iterator();
LocalDE itemxEstoquexDeposito = new LocalDE();
DepositoDE deposito = new DepositoDE();
TipoDepositoDE tipoDeposito = new TipoDepositoDE();
while(it.hasNext()) {
Object[] resultitemxEstoquexDeposito =(Object[]) it.next();
deposito.setDepositoDesc(String.valueOf(resultitemxEstoquexDeposito[0]));
tipoDeposito.setTipoDepositoDesc(String.valueOf(resultitemxEstoquexDeposito[1]));
itemxEstoquexDeposito.setdepositoDE(deposito);
itemxEstoquexDeposito.settipoDepositoDE(tipoDeposito);
}
return itemxEstoquexDeposito;
}