所以我在Entity bean中有一个Enum属性:
@Entity
@Table(name = "fileAttachment")
public class FileAttachment
// other properties..
@Enumerated(EnumType.STRING)
FileAttachmentType type;
// getters and setters
但是,当我持久化bean时,该列中的值显示为0或1或2之类的数字。
如果println
在使用EntityManager持久化bean之前枚举的值,则该值将打印为String,例如INVOICE
,但在SQL Server表中该行的值为2,例如在fileAttachmentType-column上。我还需要配置什么?我认为EnumType.STRING
可以解决问题。
答案 0 :(得分:1)
您是自己在DB中创建表还是依赖于Hibernate? 如果首先确保列类型适合存储字符串。 如果第二次尝试使用注释,如
@Column(columnDefinition = "enum('VALUE1','VALUE2')")
答案 1 :(得分:0)
好的,在这种情况下,当我添加注释时,事情就解决了:@Enumerated(EnumType.STRING)
到该字段的getter而不是实际字段。 在另一个项目中,当注释在场上而不是其他任何地方时它起作用......所以,就我而言,答案是好的旧的"由于某种原因",但它现在有效。 / p>
如果有人会对此进行评论,我会更新答案。
编辑:原因被发现了。在Entity类中的getter上已经有一个注释。这就是为什么字段上的注释不起作用的原因。碰巧是这样,你应该只在字段上注释或仅在getter上注释。两者都没有注释。