2016-05-13 34 views
0

所以我具有一个实体bean的Enum的属性:如何将Enum值作为字符串与Hibernate存储到SQL Server?

@Entity 
@Table(name = "fileAttachment") 
public class FileAttachment 

// other properties.. 

@Enumerated(EnumType.STRING) 
FileAttachmentType type; 

// getters and setters 

然而,当我坚持的豆,在该列中的值被示出为一个数字,如0或1或2。

如果我println enum的值保持与EntityManager之前持续bean,值打印为字符串,如INVOICE但在SQL Server表中该行的值为2,例如在fileAttachmentType列。我还需要配置什么?我认为EnumType.STRING会做到这一点。

回答

1

你是在DB中自己创建表还是依赖Hibernate? 如果首先确保列类型适合存储字符串。 如果第二次尝试使用注释像

@Column(columnDefinition = "enum('VALUE1','VALUE2')") 
+0

它由我在由LiquiBase运行的SQL脚本中创建。我发布了一个答案,我如何修复它。感谢您的建议 –

0

好了,在这种情况下,事情的来龙去脉时,我添加了注解:@Enumerated(EnumType.STRING)

到该字段的getter和不给实际领域。 在另一个项目中,当注释在现场而不在其他任何地方时,它就起作用了......所以,就我所了解的来说,答案是“出于某种原因”的古老答案,但它现在可行。

如果有人会评论这个原因,我会更新答案。

编辑:原因被发现。该Entity类中的getter已经有了一个注释。这就是为什么字段上的注释不起作用的原因。恰巧是这样,你应该只在字段上注释或仅在获取者上注释。两者都没有注释。

相关问题