2017-08-19 31 views
1

在我们的数据库表中,我们记录了一个大字符串及其对应的md5值。在MYSQL5,我们将此类纪录在休眠状态下注释派生数据库clolumns

insert (md5,content) values (md5(content), hex(content)); 

移动冬眠,我已经诠释了实体

@Column(name = "content", columnDefinition = "MEDIUMTEXT") 
@ColumnTransformer(read = "unhex(content)", write="hex(?)") 
private String content; 

伟大的工程。但我不明白如何注释md5列,以便它可以在插入时自动生成。特别是,一个columntransformer不会工作,因为?在注释中是指md5字段,而不是内容字段。

任何意见,或帮助赞赏。

回答

0

您可以使用hibernate拦截器,并准确地预先保存(在本例中)事件进行加密。 阅读关于冬眠拦截器在这里Hibernate Interceptors

+0

我很感谢这个答案。我学到了一些我不知道的东西。但是,我不认为这种方法可以解决我的问题。我可以拦截onSave,并从我的查询中查找状态(值)和属性名称,但对于我如何设置该值并不明显。如果我将md5字​​段的值设置为“md5(content)”,则插入该字符串,显然,我想要计算md5。 – dbp