2015-08-25 2 views
-2

У меня есть класс, обозначенный Serializable, т. Е. Этот класс реализует интерфейс Serializable. Этот класс имеет некоторые переменные типа Serializable. Я не могу понять, почему эти переменные имеют тип Serializable. Я знаю о Serializable Interface. Пожалуйста, сделайте эту концепцию понятной. Это будет большой помощью. Мой класс IS-Сериализуемые типы vaiable в java

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.............. 
} 
+2

Если вы написали класс и не знаю, почему вы определили переменные, чтобы быть 'Serializable', кто должен это знать? – Thomas

+0

Я не писал класс. Это автоматически сгенерированный класс с помощью hibernate. – VIVEK

+3

Что такое автогенерация? Схема базы данных? Как определить соответствующие столбцы? Я согласен с тем, что можно ожидать чего-то вроде 'String' или' BigDecimal'. – Thilo

ответ

4

@ Ответ JordiCastilla объясняет, что такое Serializable, но не почему оно появляется здесь.

Настоящая проблема заключается в отображении по умолчанию Hibernate для NVARCHAR. В последних версиях (то есть Hibernate 4.2 и более поздних) NVARCHAR отображается на String. В более старых версиях карты Hibernate NVARCHAR - Serializable.

Если вы генерируете код Java с помощью поколения плагин Hibernate кода, то решение для редактирования вашего плагина «hibernate.reveng.xml», как описано здесь:

С другой стороны, если у вас возникли проблемы с отображением Hibernate NVARCHAR неправильно во время выполнения, тогда это Q & может помочь:

+1

Это именно то, что я искал. Спасибо @ Stephen C – VIVEK

-1

Если вы хотите сериализовать класс все его свойства должно быть Serializable. С помощью этого использования вы гарантируете, что будете делать все свойства Serializable. Если каким-то образом имя является объектом, который не является сериализуемым, вы не сможете сериализовать весь класс.

+0

Вы не сможете скомпилировать приложение на самом деле. – EJP

0

Что такое сериализация?
Сериализация в основном заключается в преобразовании объекта в bytes, что делает этот объект легко сохраненным, общим или потоковым.

Почему атрибуты в классе должны быть сериализуемыми?
Это означает, что все компоненты объекта Serializable ДОЛЖНЫ быть самими сериализуемыми, или вы нарушите договор Serializable.

Найти here и here дальнейшие данные по сериализации.

+0

Реальный вопрос (по крайней мере для меня) - почему nvarchar (max) не превращается в String. – Thilo

Смежные вопросы