以下に定義されている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値を処理する方法を教えてください。
よろしく、
シリッシュ