Reputation: 1055
I'm using two tables by Hibernate and I dont understand why for particular query I have this problem. I hope someone recognizes the problem.
I have a table user
@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;
}
}
and a table 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
}
LOGS says:
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
Upvotes: 11
Views: 76214
Reputation: 10714
I ran into this when I had a persisted class attribute of type Number
instead of Integer
Upvotes: 0
Reputation: 4875
I met with the same mistake but finally, I saw there were no errors in the relation. if you believe there is no error in the relation then
check your imports there may wrong import for other fields.
for example in my code
import java.security.Timestamp
imported by idea automatically When I changed wrong import to import java.sql.Timestamp
; the error was gone.
Upvotes: 5
Reputation: 523
Maybe it is a trivial remark, but if you generated your Entity classes with tools like Eclipse JBoss Hibernate plugin, pay attention to the fact that it sets the type of varchar
fields as Serializable
instead of String.
At runtime you'll get org.hibernate.type.SerializationException: could not deserialize
I lost a lot of time for such a stupid detail.
Upvotes: 1
Reputation: 14317
You can simply annotate above any field of joda time:
@Temporal(TemporalType.DATE)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
Upvotes: 8
Reputation: 4084
I would recommend to set the annotations only on the fields or the getters. I prefer the fields, but thats just my taste.
See The Curious case of Field and Property Access in Hibernate:
Thus either place the annotations on the fields only or on the getters(properties) only. Mixing them and not using @Access will cause abnormal behaviour.
Then if serialization is part of your application I would recommend to generate better serialVersionUID with a tool.
Upvotes: 7