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를 도와 줄 사람이 있습니까? 내가 어떤 아이디어에 열려있어 ...
고마워,
롭
그래서 ... UserType (내 케이스에서는 FixedString)에서 특정 열 (예 : 전화)의 길이를 가져올 수 없다는 뜻입니까? @Column (길이 = 100, nullable = true) @Type (type = "com.persistence.FixedString") private String phone; – Rob
usertype은 열 유형과 길이를 지정해야합니다. 그 때문에 주석은 부적절하다. – Firo
THX Firo. 마지막으로 나는 Column의 길이를 UserType의 매개 변수로 설정하기로 결정했습니다. 그래서 Columns의 개별 길이에 따라 문자열을 동적으로자를 수 있습니다. DB의 생성 (HN에서)에 따라 @Column (길이 = 100)을 유지합니다. – Rob