【问题标题】:Hibernate @Filter on @OneToMany relationship has no effect@OneToMany 关系上的休眠 @Filter 无效
【发布时间】:2015-01-12 11:33:47
【问题描述】:

我正在使用 Hibernate 来映射我的实体和 QueryDSL 以进行查询。我的实体部门有很多家族,我只想过滤那些 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。我究竟做错了什么?

谢谢!

【问题讨论】:

    标签: hibernate filter querydsl


    【解决方案1】:

    解决了!如果在同一事务中禁用过滤器,则似乎对查询没有影响。解决方案就是删除这一行:

    session.disableFIlter("FAMILIA_FILTRO_FECHA");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多