2012-02-15 11 views
2

FixedString이라는 고유 한 UserType을 정의하고 nullSafeSet 메서드에서 모든 문자열을 공백으로 채 웁니다 (주석으로 정의 된 해당 열의 길이까지 채우기) :최대 절전 모드 : UserType - nullSafeSet - 열 길이

@Column (길이 = 100, nullable = true)).

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에) 나는 현재 열의 길이를 얻을 수있는 방법 아무 생각이 :

나는 (StringUtils.trim의 방법) nullSafeGet 방법에있는 모든 문자열을 트림 아무런 문제가 없다 , 그래서 그 문자열을 공백으로 채울 수 있습니다. (미리 정의 된 열 길이까지)

public void nullSafeSet(PreparedStatement inPreparedStatement, Object o, int i) throws SQLException { 
    String val = (String)o; 
    inPreparedStatement.setString(i, StringUtils.rightPad(val, COLUMN_LENGTH))); 
} 

저 pls를 도와 줄 사람이 있습니까? 내가 어떤 아이디어에 열려있어 ...

고마워,

답변

0

유저 유형은 지정된 길이의 SQL 문자열 유형을 반환하는 속성 SQLTYPE이 있습니다. AFAIK @Column(length=100은 사용자 유형을 포함하여 문자열 유형이 아닌 경우 무시됩니다.

+0

그래서 ... UserType (내 케이스에서는 FixedString)에서 특정 열 (예 : 전화)의 길이를 가져올 수 없다는 뜻입니까? @Column (길이 = 100, nullable = true) @Type (type = "com.persistence.FixedString") private String phone; – Rob

+0

usertype은 열 유형과 길이를 지정해야합니다. 그 때문에 주석은 부적절하다. – Firo

+0

THX Firo. 마지막으로 나는 Column의 길이를 UserType의 매개 변수로 설정하기로 결정했습니다. 그래서 Columns의 개별 길이에 따라 문자열을 동적으로자를 수 있습니다. DB의 생성 (HN에서)에 따라 @Column (길이 = 100)을 유지합니다. – Rob

관련 문제