Я предполагаю из вашего вопроса, что вы отображаете это на примитивного персонажа. В следующий раз, пожалуйста, опубликуйте полученную стековую трассировку (вы можете оставить ее там, где вы ее называете, вы можете включать спящий материал, только если ваш проект слишком чувствительный).
Если вы отобразите примитивный символ, и он будет нулевым, вы получите исключение, потому что примитивам не может быть назначен нулевой символ.
Этот класс уменьшит это, нулевой символ возвращается как символ, представляющий «0». Вы можете настроить это по своему вкусу:
import java.sql.ResultSet;
import java.sql.SQLException;
import org.hibernate.type.CharacterType;
public class NullCharacterType extends CharacterType {
/**
* Serializable ID generated by Eclipse
*/
private static final long serialVersionUID = 1L;
public NullCharacterType() {
super();
}
public Object get(final ResultSet rs, final String name)
throws SQLException {
final String str = rs.getString(name);
if (str == null || str.length() == 0) {
return new Character((char) 0);
} else {
return new Character(str.charAt(0));
}
}
}
Чтобы использовать этот новый тип в вашем отображении спящего режима, до того, как вы получили что-то вроде:
<property name="theChar" type="character">
Теперь вы просто указываете имя класса в качестве вашего типа:
<property name="theChar" type="yourpackage.NullCharacterType">
Однако лучше всего не использовать примитивные типы для отображения базы данных. Если это вообще возможно, используйте Character вместо char, потому что таким образом у вас не возникнет проблем с null (null может быть назначен типам оболочки).