hibernate将Set <enum>存储到数据库</enum>

时间:2012-11-21 18:09:44

标签: java spring hibernate enums

我正在尝试使用hibernate将一组枚举存储到数据库中。

枚举类似于

public enum SomeEnum { 
    ITEM,
    ITEM2,
}

我有一个像这样的Hibernate模型实体

@Entity
public class TableObject implements BaseObject {

private Long id;
private Set<SomeEnum> someEnumSet;

@Column(name = "TABLE_COLUMN", nullable = true, insertable = true, updatable = true)
@ElementCollection
public Set<SomeEnum> getSectionSet() {
    return sectionSet;
}

public void setSectionSet(Set<SomeEnum> sectionSet) {
    this.sectionSet = sectionSet;
}
}

我不认为@ElementCollection注释是正确的。 'TABLE_COLUMN'列在DB中的类型为CLOB。 (Oracle)的

谢谢, 亚历克斯。

1 个答案:

答案 0 :(得分:7)

尝试添加@Enumerated注释:

@Entity
public class TableObject implements BaseObject {

   private Long id;
   private Set<SomeEnum> someEnumSet;

   @Column(name = "TABLE_COLUMN", nullable = true, insertable = true, updatable = true)
   @ElementCollection
   @Enumerated(EnumType.STRING)
   public Set<SomeEnum> getSectionSet() {
      return sectionSet;
   }

   public void setSectionSet(Set<SomeEnum> sectionSet) {
      this.sectionSet = sectionSet;
   }
}

它应该让hibernate将你的enume存储为一个字符串(enumes names)