Java 将条件与枚举一起使用

Java 将条件与枚举一起使用,java,hibernate,grails,enums,Java,Hibernate,Grails,Enums,我有一个域和一个枚举,如下所示: class Order { static hasMany = [statuses: StatusEnum] } public enum StatusEnum { PAID("Paid") PICKED_UP("Picked Up") } 我正在尝试使用with criteria查找已提货的订单: Order.withCriteria { statuses { ... } } 但是,我遇到了一个休眠错误

我有一个域和一个枚举,如下所示:

class Order {
    static hasMany = [statuses: StatusEnum]
}

public enum StatusEnum {
    PAID("Paid")
    PICKED_UP("Picked Up")
}
我正在尝试使用
with criteria
查找已提货的订单:

Order.withCriteria {
    statuses {
        ...
    }
}
但是,我遇到了一个休眠错误:

org.hibernate.MappingException:集合不是关联

据报道,这似乎是Hibernate的局限性(至少在2011年的时候是这样)。甚至还有一个未解决的Grails问题报告:


有没有人对如何在不使用HQL的情况下编写此关系的标准(最好是保持域的原样)有任何建议?

请查看:要持久化
状态
集合,我假设gorm必须为枚举和根类之间的关联提供一个单独的表(我不知道任何其他方法). 考虑到这一点,如果集合是一个
集合
(唯一),并且您可以使用复合PK,那么您可能希望该“关联”是一个只包含两个字段的显式类(
order
statusEnum
);否则,将有3个字段和一个附加id。这并不能直接回答您的问题,但可以作为一种替代方法。请检查:要持久化
status
集合,我假设gorm必须有一个单独的表,用于枚举和根类之间的关联(我不知道任何其他方法)。考虑到这一点,如果集合是一个
集合
(唯一),并且您可以使用复合PK,那么您可能希望该“关联”是一个只包含两个字段的显式类(
order
statusEnum
);否则,3个字段带有一个附加id。这不会直接回答您的问题,但是一个备选方案。