我有一个 EnumSet,我认为映射到一系列布尔列会很好。这将使使用 SQL 工具进行检查变得容易,并且对可用枚举值的更改也具有弹性。但是,我真的不想为此手写所有的 getter 和 setter。
有没有人有一个聪明的解决方案,使用某种休眠元数据将此对象拆分为一堆属性?
谢谢!
我有一个 EnumSet,我认为映射到一系列布尔列会很好。这将使使用 SQL 工具进行检查变得容易,并且对可用枚举值的更改也具有弹性。但是,我真的不想为此手写所有的 getter 和 setter。
有没有人有一个聪明的解决方案,使用某种休眠元数据将此对象拆分为一堆属性?
谢谢!
如果我理解正确,对于像这样的枚举:
public enum Color { RED, GREEN, BLUE; }
您将在数据库中有 3 个真/假列,每个可能的枚举值对应一个。然后一个EnumSet
包含,比如说,红色和蓝色,应该映射到:
RED GREEN BLUE
true false true
如果是这种情况,我知道的唯一方法是编写自己的org.hibernate.usertype.UserType
. 这是一项非常简单的任务,在 Hibernate 站点上提供了一些示例,例如,这里。
编辑:我刚刚意识到事情必须更复杂一些。如果您希望在您的应用程序中为所有可能的情况使用一种 Hibernate 类型映射EnumSet
,则必须执行以下操作:
org.hibernate.usertype.ParameterizedType
枚举类并使用户类型可参数化。EnumSet
。这很容易相当于一整天的工作,但似乎很可行。希望你从这里弄清楚。