Hibernate如何使用带有Query Cached的detachedCriteria

时间:2015-10-15 14:47:44

标签: java hibernate caching detachedcriteria

我有像这样的detachedCriteria

private final DetachedCriteria DETACHED_CRITERIA_FOR_FILTERING_STUDENTS=   DetachedCriteria.forClass(Students.class)
        .add(filters)
        .add(super.criterionForFilteringStudents)
        .setProjection(idProjection())
        .setResultTransformer(transformer(Students.class));

后来我使用它就像通常我有一个名为RelationShip的表,它有一个Integer,它不是一个外键,只是一个Integer列。

final Criteria criteria = session.createCriteria(RelationShip.class)
     .add(filters)          
     .add(Subqueries.propertyIn("c03",DETACHED_CRITERIA_FOR_FILTERING_STUDENTS));

一切都像魅力一样,但我确实意识到这个查询是完全缓存的,我的意思是我当然在不同的环境中使用这个。

public List<Student>getStudents()
{
     final Criteria criteria = session.createCriteria(Students.class)
        .add(filters)
        .add(super.criterionForFilteringStudents)
        .setProjection(idProjection())
        .setResultTransformer(transformer(Students.class))
        .setCacheable(true)
        .setCacheRegion(region);
     return criteria.list();
}

当然我可以做点什么

public List<RelationShip>getRelationShip()
{
     final Criteria criteria = session.createCriteria(RelationShip.class)
       .add(filters)          
     .add(Restrictions.in("c03",getStudents()));
     return criteria.list();
}

但我带来了这个问题,我怎么能使用DetachedCriteria,这是一个完全可缓存或缓存的查询,这可能吗?

我试过

DETACHED_CRITERIA_FOR_FILTERING_STUDENTS.getExecutableCriteria(session).setCacheable(true).setCacheRegion(region)

但没有成功。

这可能吗?

0 个答案:

没有答案