Mapping EnumSet in Hibernate

2019-05-10 05:11发布

问题:

How to store EnumSet in the DB (using Hibernate)?

@Entity
public class A
{
 public static enum SOME_ENUM { A, B, C };

 private EnumSet<SOME_ENUM> myEnumSet = EnumSet.of(SOME_ENUM.A, SOME_ENUM.B);

 ...
 ...
}

If I try to persist the above, I get exception of course. I wanted to use @CollectionOfElements, but it is deprecated. Is there any alternative of @CollectionOfElements?

Is there a way to store EnumSet in a single column without writing UserType?

Thanks!

回答1:

hibernate does not have built in support for such things. Note that when dealing with hibernate and collections you should really only be specifying an interface; in this case Set. Hibernate proxies all collections so it can efficiently deal with lazy loading.

This is not to say this is difficult. See this documentation

https://forum.hibernate.org/viewtopic.php?p=2300843