Hibernate =查询表的标准

时间:2015-07-13 08:35:50

标签: spring hibernate

我想通过传递一个对象来查询hibernate,我认为这是支持的,但我想这不是因为我的查询返回了Product表中的所有对象。

我有产品和产品有一组类别,我想退回所有具有该类别的产品。

Category只是一个id(我传递的是null,因为我希望通过名称获取)和一个名称,它是我在类别对象上设置的字符串,然后通过将其添加到Product对象来传递给它附在产品上的一套。

我将一个对象传递给spring rest客户端并将其转换为一个hibernate实体,然后我想我可以将它传递给hibernate,并使用我想要按集合过滤的属性:

public List<Product> getProductsByFilterCriteria(Product productToLocate) { 
    Session session = sessionFactory.getCurrentSession();
    List<Product> products = new ArrayList<Product>();
    //Just maps the values
    ProductEntity criteria = mapProductCriteriaToEntity(productToLocate);

    @SuppressWarnings("unchecked")
    List<ProductEntity> productsMatchingCriteria =   (List<ProductEntity>)session.createCriteria(ProductEntity.class).add(Example.create(criteria).excludeZeroes()).list();    

    for(ProductEntity productEntity : productsMatchingCriteria) {

        products.add(mapProductEntityToProduct(productEntity));
    }

    return products;          
}   

我已经使用包含单个类别的列表设置了产品实体,并且没有设置其他属性。

如何将产品及其类别集合传递给休眠,并获取所有类别名称类别的产品?

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

17.8。示例查询

     

org.hibernate.criterion.Example类允许您从给定实例构造查询条件。

     

[...]

     

忽略版本属性,标识符和关联

(强调我的)