Boa tarde pessoal, estou com a seguinte dúvida e problema
Tenho 2 Entity(Estoque e EstoqueProdutoQuantidade) segue um trecho do código das duas:
@Entity
public class Estoque {
@Id
@GeneratedValue(generator="SEQ_ESTOQUE_ID", strategy=GenerationType.SEQUENCE)
@SequenceGenerator(sequenceName="SEQ_ESTOQUE_ID", name="SEQ_ESTOQUE_ID", allocationSize=1)
protected Long id;
@OneToMany(cascade=CascadeType.ALL, mappedBy="estoque")
protected List<EstoqueProdutoQuantidade> produtos;
...
}
@Entity
@Table(name="ESTOQUE_PRODUTO_QTD")
public class EstoqueProdutoQuantidade extends ProdutoQuantidade {
@ManyToOne
@JoinColumn(name="ID_ESTOQUE")
protected Estoque estoque;
...
}
E estou fazendo o seguinte criteria:
Criteria criteria = getCriteria();
criteria.createAlias("produtos", "prod");
criteria.add(Restrictions.in("prod.status", new Object[] {EstoqueProdutoStatus.ATIVO, EstoqueProdutoStatus.BLOQUEADO}));
criteria.add(Restrictions.eq("id", id));
criteria.setFetchMode("produtos", FetchMode.SELECT);
criteria.setFetchMode("quantidades", FetchMode.SELECT);
Estoque estoque = (Estoque) criteria.uniqueResult();
No meu banco de dados eu tenho 2 registro de EstoqueProdutoQuantidade com o status indicado no criteria (EstoqueProdutoStatus.ATIVO e EstoqueProdutoStatus.BLOQUEADO), só que ao executar o criteria, ele está montando 2 selects, o primeiro, baseado no meu criteria e trazendo os 2 registros q eu preciso, e um segundo, que é baseado no mapeamento do entity EstoqueProdutoQuantidade com a entity Estoque, e com isso ele está me trazendo os 5 registros de EstoqueProdutoQuantidade que eu tenho no meu banco, não esstou entendendo o pq q ele está executando.
Segue abaixo os selects q ele está executando, o 2 não sei pq está sendo executado!
SELECT est.*
FROM Estoque est, ESTOQUE_PRODUTO_QTD qtd
WHERE est.id = qtd.id_estoque
AND qtd.status in(1, 0)
AND est.id = 2
SELECT qtd.*
FROM ESTOQUE_PRODUTO_QTD qtd
WHERE qtd.id_estoque = 2
Se alguem tiver ideia do que possa ser, e puder me ajuda, agradeço
Muito obrigado.