【发布时间】:2022-01-12 02:54:30
【问题描述】:
我正在尝试对包含 UUID 的二进制 (16) 表示的表的查询应用过滤器,但是我收到错误:
java.lang.IllegalArgumentException: Incorrect filter parameter [accountId]
at org.hibernate.internal.FilterImpl.setParameter(FilterImpl.java:80) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
我已经尝试过这两个过滤器声明
@FilterDef(name="accountFilter", parameters=@ParamDef( name="accountId", type="binary" ) )
@Filter(name="accountFilter", condition=":accountId = account_id")
和
@FilterDef(name="accountFilter", parameters=@ParamDef( name="accountId", type="binary" ) )
@Filter(name="accountFilter", condition="UUID_TO_BIN(:accountId) = account_id")
使用 UUID toString 方法调用过滤器:
enableFilter(ACCOUNT_FILTER, "accountId", currentUser.getAccount().getId().toString());
两者都会导致相同的错误。
使用 MySQL 8.0.23 和 Hibernate 5.4.32。该列定义为二进制(16)数据
【问题讨论】: