Hibernate - Procura passando um bean semi-populado

Hi
Estou procurando produtos em uma base de dados, passando um Product com alguns atributos nulos. O meu DAO está assim:

...

public class  ProductDAO{

	...

	public Collection findByProduct(Product product){
		Collection products = null;
		try {
			Session session = config.buildSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Product.class);
			criteria.add(Example.create(product));
			products = criteria.list();
			session.close();
		} catch (HibernateException e) {
			.printStackTrace();
		}
		return products;
	}
}

Porém, em meu produto tem um atributo que é uma coleção de categorias:


...

public class Product {

    private Long id;
    private String name;
    private Set categories = new HashSet();

    /**
     * @hibernate.bag
     *      table = "stk_product_category"
     *      cascade = "save-update"
     * 
     * @hibernate.collection-many-to-many 
     *      column = "fk_cat_id" 
     *      class = "com.blablabla.Category"
     * 
     * @hibernate.collection-key
     *      column = "fk_prdct_id"
     */
    public Collection getCategories() {
        return categories;
    }

    /**
     * @hibernate.id
     *      column = "id"
     *      generator-class = "hilo"
     *      unsaved-value = "null"
     */
    public Long getId() {
        return id;
    }

    /**
     * @return Nome do produto.
     * @hibernate.property
     *      column = "name"
     */
    public String getName() {
        return name;
    }

    ...

}

O que acontece com a coleção de retornto de meu método findByProduct em relação a coleção de propriedades populadas dentro do argumento, quando uso a classe Example do hibernate como critério?

ele vai pegar todos os attributos que estão preenchidos no objeto product e adicionar no where…

Certo, mas em relação a coleção de categorias do produto passado, como ficaria este where?

que tal vc testar ai e mostrar o sql para a gente ver como fica? :slight_smile:

Na versão que eu estou utilizando, o Example só considera propriedades que não são associações…

Fallow