Boa noite pessoal, me deparei com um problema na aplicação e não consigo encontrar a causa.
Tenhos 2 beans
NotaFiscal
@Entity
@Table(name="Nota_Fiscal")
public class NotaFiscal {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Long numero;
@Column(name="data_emissao")
private Calendar dtEmissao;
private String hora;
@Column(name="cnpj_emissor")
private String cnpjEmissor;
@Column(name="valor_total")
private BigDecimal valorTotal;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id_dados_adicionais")
private DadosAdicionais dadosAdicionais;
@ManyToOne
@JoinColumn(name="id_usuario")
private Usuario usuario;
@OneToMany(mappedBy = "notaFiscal", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ItemNF> itens;
e ItemNF
@Entity
@Table(name="Item_NF")
public class ItemNF {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="cd_produto")
private String cdProduto;
private String descricao;
private Integer qtde;
private BigDecimal valor;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="id_nota_fiscal")
private NotaFiscal notaFiscal;
Meu problema é quando eu peço para listar a notaFiscal pelo usuario usando o metodo:
public List<NotaFiscal> findByUsuario(Usuario usuario){
Criteria criteria = getSession().createCriteria(NotaFiscal.class).add(Restrictions.eq("usuario", usuario));
return criteria.list();
}
ele gera a seguinte query:
select
*
from
Nota_Fiscal this_
left outer join
Dados_Adicionais dadosadici2_
on this_.id_dados_adicionais=dadosadici2_.id
left outer join
Categoria categoria3_
on dadosadici2_.id_categoria=categoria3_.id
left outer join
Item_Nf itemNd4_
on this_.id=itemNd4_.id_nota_fiscal
left outer join
Usuario usuario5_
on this_.id_usuario=usuario5_.cpf_cnpj
left outer join
Endereco endereco6_
on usuario5_.id_endereco=endereco6_.id
left outer join
Tipo_Usuario tipousuari7_
on usuario5_.id_tipo_usuario=tipousuari7_.id
where
this_.id_usuario=?
E ela me retorna 5 registros em vez de 1 seria o correto, então executei o script no banco tirando o join com a tabela Item_Nf e ele traz correto.
O que esta havendo? Porque ele traz mais registros do que deveria?
Muito Obrigado