我有一个标记为Serializable的类,即此类实现了Serializable接口。这个类有一些Serializable类型的变量。我无法理解为什么这些变量是Serializable类型。我知道Serializable接口。请明确这个概念。这将是一个很大的帮助。我的班级是 -
public class DestinationGroups implements java.io.Serializable {
private int id;
private Serializable name;// why serializable here??
private Serializable description;// why serializable here??
private BigDecimal rating;
private Set destinationses = new HashSet(0);
private Set destinationGroupRatingses = new HashSet(0);
public DestinationGroups() {
}
public DestinationGroups(int id) {
this.id = id;
}
..........other code..............
}
答案 0 :(得分:4)
@ JordiCastilla的回答解释了Serializable
是什么,但不是为什么它出现在这里。
这里真正的问题是Hibernate对NVARCHAR
的默认映射。在最近的版本(即Hibernate 4.2及更高版本)中,NVARCHAR
被映射到String
。在旧版本中,Hibernate将NVARCHAR
映射到Serializable
。
如果您使用Hibernate代码生成插件生成Java代码,那么解决方案是编辑您的插件" hibernate.reveng.xml"如下所述:
另一方面,如果您在运行时错误地使用Hibernate映射NVARCHAR
,那么此Q& A可能有所帮助:
答案 1 :(得分:0)
什么是序列化?
序列化基本上是将对象转换为bytes
,这使得该对象可以轻松保存,共享或流式传输。
为什么课堂上的属性必须是可序列化的?
这意味着,Serializable对象中的所有组件必须是可序列化的,或者您将破坏Serializable合同。
答案 2 :(得分:-1)
如果要序列化一个类,其所有属性必须为Serializable
。使用此用法,您可以保证生成所有属性Serializable
。
如果某个名称是一个不可序列化的对象,您将无法序列化整个类。