我正在使用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
我建议仅在字段或getter上设置注释。我更喜欢田野,但那只是我的口味。
请参阅Hibernate中有关字段和属性访问的奇怪案例:
因此,要么将注释仅放置在字段上,要么仅放置在getters(properties)上。混合它们而不使用@Access会导致异常行为。
然后,如果序列化是您应用程序的一部分,我建议使用工具生成更好的serialVersionUID。