4

以下に定義されているHibernateフィルターを使用しています:

@FilterDef(
    name = "DeptFilter",
    parameters = {
        @ParamDef(name = "schoolCode", type = "string"),
        @ParamDef(name = "deptCode", type = "string")
    }
)
@Filter(
    name = "DeptFilter",
    condition = "(:schoolCode = schoolCode and (deptCode IS NULL or :deptCode = deptCode))"
)

私の場合、一部のデータはすべての部門で利用できます。そのような場合、部門の値をNULLのままにしました。

Filter sessionFilter = session.enableFilter("DeptFilter");
sessionFilter.setParameter("schoolCode", schoolId.getSchoolCode());
sessionFilter.setParameter("deptCode", schoolId.getDeptCode());

Query query = session.createQuery("from Inbox where assignedTo = :assignedTo ")
        .setParameter("assignedTo", userRole);

部門コードパラメータとしてNULL値を渡す場合。次の例外が発生します:

Caused by: org.hibernate.HibernateException: Filter [DeptFilter] parameter [deptCode] value not set

空の文字列( "")も使用しようとしましたが、この場合、空白/ヌルの部門IDを持つレコードが取得されません。

フィルタでNULL値を処理する方法を教えてください。

よろしく、

シリッシュ

4

0 に答える 0