2012-02-09 51 views
1

我在Hibernate实体中有一系列基于字符串的属性,默认情况下Hibernate将这些属性映射到VARCHAR(255)。这不是一些值足够长的时间,但我知道我可以使用让休眠自动截断数据以适应列而不是抛出异常

@Column (length) 

改变这种但是有时候我的情况下被传递到集中的数据*属性*方法比我定义的长度长,在这些情况下,我只是希望休眠本质上做一个s.substring(0,长度),但它只是抛出一个异常。

有什么办法可以让它自动对数据进行子串匹配。如果我不能,我必须添加一个长度检查到每一个设置的方法,如果我改变了数据库中列的长度,然后更新代码。这并不是一个令人头痛的问题,但如果我能避免这种情况,那将会很好。

+0

可能重复:http://stackoverflow.com/q/6882009/346561 – 2012-02-09 14:56:09

+0

@Jesse韦伯是的,你是正确的,这是同一个问题,但我想我的问题更清晰,如果能够提供使用Hibernate拦截器的实际解决方案,那将会很不错。 – 2012-02-09 15:20:26

回答

0

实现Hibernate的用户类型和

for (... map : config.GetClassMapping()) 
{ 
    // iterate properties and set usertype to all properties with columns length set 
}