首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate: UserType - nullSafeSet -列长度

Hibernate: UserType - nullSafeSet -列长度
EN

Stack Overflow用户
提问于 2012-02-15 20:20:10
回答 2查看 1.3K关注 0票数 2

我正在定义自己的名为FixedString的UserType,并且在nullSafeSet方法中,我想用空格填充(rightPad)所有字符串(最大长度为注释定义的列的长度:

@Column(length=100,nullable=true))。

我可以(用StringUtils.trim方法)修剪nullSafeGet方法中的所有字符串:

代码语言:javascript
复制
public Object nullSafeGet(ResultSet inResultSet, String[] names, Object o) throws SQLException {
  String val = (String)Hibernate.STRING.nullSafeGet(inResultSet, names[0]);   
  return StringUtils.trim(val);
}

但是我不知道如何获得当前列的长度(在我的例子中是COLUMN_LENGTH),所以我可以用空格填充该字符串(直到预定义的列长度)。

代码语言:javascript
复制
public void nullSafeSet(PreparedStatement inPreparedStatement, Object o, int i) throws SQLException {
   String val = (String)o;
   inPreparedStatement.setString(i, StringUtils.rightPad(val, COLUMN_LENGTH)));
}

有没有人能帮我一下?我对任何想法都持开放态度。

非常感谢,

抢夺

EN

回答 2

Stack Overflow用户

发布于 2012-03-02 03:51:40

使用inPreparedStatement.getParameterMetaData().getPrecision(i)作为列长度,将解决您的问题。

票数 2
EN

Stack Overflow用户

发布于 2012-02-15 21:21:03

usertype有一个属性sqltype,它返回指定长度的sql字符串类型。对于包括用户类型在内的非字符串类型,将忽略AFAIK @Column(length=100

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9293257

复制
相关文章

相似问题

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