首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JPA / Spring / Hibernate自动截断字符串列的方法?

使用JPA / Spring / Hibernate自动截断字符串列的方法?
EN

Stack Overflow用户
提问于 2013-11-12 00:00:37
回答 1查看 6.8K关注 0票数 6

我使用的是Spring 3.1.1.RELEASE、JPA 2.0和Hibernate 4.1.0.Final。我有一个VARCHAR5.5列,类型为MySQL (100)。如果我保存一个值大于100个字符的实体,不出所料,保存失败并显示以下错误

代码语言:javascript
复制
SQL [n/a]; nested exception is org.hibernate.exception.DataException: Data truncation: Data too long for column 'MY_COL' at row 1

org.springframework.dao.DataIntegrityViolationException:数据截断:列的数据太长

有没有办法设置Spring/Hibernate/JPA,如果我的字符串值太长,数据会自动截断到最大长度?我意识到我可以添加代码来自动检查字符串是否为100个字符,然后使用Java截断字符串,但我很好奇是否有一种不那么严格的方法来做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2013-11-12 00:07:26

为什么不把截断放在setString(String)方法中呢?看起来你有一个域规则,它应该总是在100个字符以内截断,所以强制执行它:

代码语言:javascript
复制
public void setName(String name) {
    this.name = name.length() > 100 ? name.substring(0,100) : name;
}

如果这看起来太困难和冗长,而且您总是这样做,为什么不使用Spring AOP并创建您自己的注释呢?

代码语言:javascript
复制
@Truncate(length=100)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19910653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档