【发布时间】:2015-10-14 08:53:36
【问题描述】:
我需要弄清楚如何使用定义为的枚举参数列表应用基于注释的过滤:
@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);
我从休眠中得到的错误是:
org.hibernate.HibernateException: Incorrect type for parameter [statuses]
数据在PostgreSQL中,类型定义:
CREATE TYPE statuscmp AS ENUM ('ACTIVE','INACTIVE','PAUSED','DRAFT','SCHEDULED','ENDED','ARCHIVED');
我已经看到很多关于如何针对单个 Enum 值进行条件查询和过滤的 SO 问题,但还没有关于过滤 set 枚举值的问题。有没有办法显式转换单个值?
【问题讨论】:
标签: java hibernate postgresql enums