我需要找出如何使用基于注解的过滤器,其中参数列表是枚举类型定义为:
@Column(name = "target_status")
@Enumerated(EnumType.STRING)
@Type(type="PGEnumConverter", parameters = {
@Parameter(name = "enumClassName",
value = "com.company.model.campaign.CampaignTarget$Status")
})
private Status targetStatus;
所以我的
@FilterDef
看起来像这样: @FilterDef(name="filterCampaignTargetByStatuses",
defaultCondition="target_status in (:statuses)",
parameters = @ParamDef(name = "statuses", type = "string"))
当我启用过滤器时,它会变成这样:
session.enableFilter("filterCampaignTargetByStatuses").
setParameterList("statuses", statuses);
我收到来自 Hibernate 的错误信息:
org.hibernate.HibernateException: Incorrect type for parameter [statuses]
数据存储在PostgreSQL中,该类型的定义如下:
CREATE TYPE statuscmp AS ENUM ('ACTIVE','INACTIVE','PAUSED','DRAFT','SCHEDULED','ENDED','ARCHIVED');
我看到很多关于如何对单个枚举值进行条件查询和过滤的SO问题,但还没有关于在一组枚举值上进行过滤的问题。是否有一种方法可以显式地转换单个值?