我使用Hibernate来映射查询的实体和QueryDSL。我的实体部门有很多家庭,我只想过滤那些FMODIFICACION列为null的内容。这是我的部门实体:
@FilterDef(name = "FAMILIA_FILTRO_FECHA")
@Entity
public class Sector {
...
private List<Familia> familiasList;
@OneToMany(mappedBy = "sector")
@Filter(name = "FAMILIA_FILTRO_FECHA", condition = "FMODIFICACION IS NULL")
public List<Familia> getFamiliasList() {
return familiasList;
}
...
}这是一个查询(使用QueryDSL):
public List<Sector> getSectores() {
//enable filter
Session session = entityManager.unwrap(Session.class);
Filter filtroFamilia = session.enableFilter("FAMILIA_FILTRO_FECHA");
//perform query
QSector qSector = QSector.sector;
JPAQuery query = new JPAQuery(entityManager);
List<Sector> sectores = query.from(qSector).list(qSector);
// disable filter
session.disableFIlter("FAMILIA_FILTRO_FECHA");
return sectores;
}但是这个查询正在检索所有的Familia。我做错了什么?
谢谢!
发布于 2015-01-12 11:43:07
解决了!如果在同一事务中禁用了筛选器,则在查询中似乎没有任何效果。解决方案就是移除这一行:
session.disableFIlter("FAMILIA_FILTRO_FECHA");https://stackoverflow.com/questions/27901026
复制相似问题