Ajuda Hibernate Criteria retorna mais registros do que o certo

3 respostas
fabioebner

Pessoal tenho as duas entitys:

TbFabricanteAutomovel
public class TbFabricanteAutomovel implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="db_leilao.tb_fabricante_automovel_seq")
    @Basic(optional = false)
    @Column(name = "cd_fabricante_automovel", nullable = false)
    private Integer cdFabricanteAutomovel;
    @Basic(optional = false)
    @Column(name = "nm_fabricante_automovel", nullable = false, length = 250)
    private String nmFabricanteAutomovel;
    @OneToMany(mappedBy = "cdFabricanteModelo", fetch = FetchType.EAGER)
    private Set<TbModeloAutomovel> tbModeloAutomovelCollection;
TbModeloAutomovel
@NamedQueries({@NamedQuery(name = "TbModeloAutomovel.findAll", query = "SELECT t FROM TbModeloAutomovel t")})
public class TbModeloAutomovel implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="db_leilao.tb_modelo_automovel_seq")
    @Basic(optional = false)
    @Column(name = "cd_modelo_automovel", nullable = false)
    private Integer cdModeloAutomovel;
    @Basic(optional = false)
    @Column(name = "nm_modelo_automovel", nullable = false, length = 250)
    private String nmModeloAutomovel;
    @OneToMany(mappedBy = "cdModeloAutomovel", fetch = FetchType.EAGER)
    private Set<TbAutomovel> tbAutomovelCollection;
    @JoinColumn(name = "cd_fabricante_modelo", referencedColumnName = "cd_fabricante_automovel")
    @ManyToOne(fetch = FetchType.EAGER)
    private TbFabricanteAutomovel cdFabricanteModelo;
faco a seguinte Criteria:
public List<TbModeloAutomovel> getModelosFromFabricante(TbFabricanteAutomovel fabricanteAutomovel) {
        DetachedCriteria criteria = DetachedCriteria.forClass(TbModeloAutomovel.class);
        criteria.add(Expression.eq("cdFabricanteModelo", fabricanteAutomovel));
        return hibernateTemplate.findByCriteria(criteria);

    }

tenho cadastrado dois fabricantes VW e BMW e tenho dois modelos de automoveis para cada BMW - X5, Z3 e para VW - GOL E PASSAT . porem o retorno da minha criteria e 2GOLS e 2 PASSAT para VW e 2 Z3 e 1 X5 para BMW, sendo q o certo seria UM MODELO DE CADA PARA CADA FABRICANTE.. alguem pode me ajudar??

obrigado

3 Respostas

D

Só por curiosidade, pq expression??
Eu uso Restrictions, Expression tem a mesma função???

fabioebner

Cara num sei tbm hehehe eu peguei um que usava essa e acabei deixando… to iniciando no esquema… qual a diferenca entre eles??

fabioebner

coloquei Restrictions e nada tbm… continua a mesma coisa

Criado 25 de novembro de 2009
Ultima resposta 25 de nov. de 2009
Respostas 3
Participantes 2