орг.зимовать.тип.SerializationException: не удалось десериализовать
Я использую две таблицы Hibernate и Я не понимаю, почему для конкретного запроса у меня такая проблема. Надеюсь, кто-то осознает проблему.
у меня есть таблица пользователей
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long idUser;
private Area area;
//...other get and setter
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="idarea")
public Area getArea() {
return area;
}
}
и площадь стола
@Entity
@Table(name = "area")
public class Area implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="idarea")
private Long idArea;
@Column(name="area_name")
private String areaName;
@Column(name="time_start")
private LocalTime timeStart;
//...other get and setter
}
журналы говорит:
15:27:28,140 INFO DefaultLoadEventListener:160 - Error performing load command
org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.doDeserialize(SerializationHelper.java:262)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:306)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:130)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:116)
at
....//other lines
org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
4 ответов
Я бы рекомендовал установить аннотации только на полях или геттерах. Я предпочитаю поля, но это только мой вкус.
посмотреть любопытный случай доступа к полю и свойствам в спящем режиме:
таким образом, либо поместите аннотации только на поля, либо только на геттеры(свойства). Смешивание их и не использование @Access вызовет аномальное поведение.
тогда, если сериализация является частью вашего приложения, я бы рекомендуем сгенерировать лучший serialVersionUID с помощью инструмента.
вы можете просто аннотировать над любым полем времени joda:
@Temporal(TemporalType.DATE)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
возможно, это тривиальное замечание, но если вы создали свои классы сущностей с помощью таких инструментов, как Eclipse JBoss Hibernate plugin, обратите внимание на то, что он устанавливает тип varchar
поля Serializable
вместо строки.
во время выполнения вы получите org.hibernate.type.SerializationException: could not deserialize
Я потерял много времени на такую глупую деталь.
я столкнулся с той же ошибкой, но, наконец, я увидел, что ошибок в отношении не было. если вы считаете, что в отношении нет ошибки, то
проверьте свой импорт, возможно, неправильный импорт для других полей.
например в моем коде
import java.security.Timestamp
импортируется по идее автоматически, когда я изменил неправильный импорт на импорт java.sql.Timestamp
; ошибка пропала.