@OneToMany 关系上的 Hibernate @Filter 无效
Hibernate @Filter on @OneToMany relationship has no effect
我正在使用 Hibernate 映射我的实体并使用 QueryDSL 进行查询。我的实体部门有很多 Familia,我只想过滤 FMODIFICACION 列为空的那些。这是我的部门实体:
@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。我究竟做错了什么?
谢谢!
已解决!如果在同一事务中禁用过滤器,则似乎对查询没有影响。解决方案就是删除这一行:
session.disableFIlter("FAMILIA_FILTRO_FECHA");
我正在使用 Hibernate 映射我的实体并使用 QueryDSL 进行查询。我的实体部门有很多 Familia,我只想过滤 FMODIFICACION 列为空的那些。这是我的部门实体:
@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。我究竟做错了什么?
谢谢!
已解决!如果在同一事务中禁用过滤器,则似乎对查询没有影响。解决方案就是删除这一行:
session.disableFIlter("FAMILIA_FILTRO_FECHA");