Невозможно преобразовать в java.io.Serializable

В настоящее время я использую критерии для получения сведений о пользователе, но при попытке запросить объект сведений с помощью правильного пользователя я получаю ClassCastException.

Мой код критериев;

Criteria criteria = sess.createCriteria(UserDetails.class)
criteria.add(Restrictions.eq("user.id", user.id));

Я тоже пробовал использовать;

Criteria criteria = sess.createCriteria(UserDetails.class)

Criteria subCriteria = criteria.createCriteria("user");
subCriteria.add(Restrictions.eq("id", user.id));

Оба дают мне ClassCastException. Я знаю, что могу легко решить эту проблему, позволив пользователю реализовать Serializable, но есть ли другое решение?


person Thizzer    schedule 24.12.2010    source источник
comment
Почему вы не хотите реализовывать Serializable?   -  person Juha Syrjälä    schedule 24.12.2010
comment
У меня такое чувство, что есть способ лучше решить эту проблему   -  person Thizzer    schedule 24.12.2010
comment
Вы проверили эту ссылку: stackoverflow.com/questions/2020904/   -  person craftsman    schedule 24.12.2010


Ответы (4)


Единственное другое решение - реализовать Externalizable.

person user207421    schedule 24.12.2010
comment
Externalizable расширяет Serializable, поэтому вы можете использовать Serializable любым способом. - person Juha Syrjälä; 24.12.2010
comment
@Juha Syrjälä: очевидно, но это не значит, что это то же самое решение. Тебе нужно больше работать. - person user207421; 10.01.2011

Вы должны реализовать Serializable интерфейс.

person Community    schedule 24.12.2010
comment
OP запрашивает другое решение. - person user207421; 24.07.2017

Для меня проблема заключалась в ошибке в Hibernate при использовании отношений, отличных от pk: https://hibernate.atlassian.net/browse/HHH-7668

В качестве обходного пути я реализовал Serializable, и исключение исчезло.

person m1schka    schedule 14.05.2018
comment
Это сэкономило мне время, другого выхода пока искать не надо :) - person Al-Mothafar; 11.12.2018
comment
Это способ решить проблему или просто подавляет ошибку? Извините, я новичок в Spring Jpa и пытался объединить таблицы с непервичными ключами. - person elembivos; 18.08.2019

Мой опыт был таким. У меня работала цепочка родительско-дочерних отношений. Затем мне пришлось провести рефакторинг. В процессе мне не удалось правильно обновить все мои аннотации. Именно тогда я начал получать ошибку приведения к Serializable. Я реализовал Serializable, и это выявило настоящие проблемы. Как только все заработало, я смог удалить Serializable.

Итак, отвечая на ваш вопрос, настоящая проблема может быть в вашей настройке, и Hibernate пытается обойти проблемы путем сериализации определенных объектов. Попробуйте временно реализовать Serializable, чтобы выявить проблемы, а затем удалите его.

person Steve11235    schedule 25.06.2012
comment
В моем случае это было отображение ManyToOne, которое дало более одного результата в запросе, который дал ClassCastException. Hibernate создал соответствующее исключение после implements Serializable. - person adrobisch; 17.06.2015
comment
В моем случае интерфейс заставляет его работать, но я не хочу добавлять его, когда я использую спящий режим для маршалирования / демаршалирования. - person Robin; 22.06.2015
comment
Я попробовал реализовать, и все работает нормально. Хотя я не могу понять, зачем это нужно, поскольку другие объекты работают нормально без реализации Serializable. - person Nikhil Sahu; 06.02.2017