2015-08-15 3 views
0

Я пытаюсь понять, возможно ли иметь несвязанное свойство в сущности JPA, а также сериализовать его. Я хочу сделать это, потому что я хотел бы запрашивать строки из моей базы данных, затем делать вычисления на нескольких из возвращаемых полей и заполнять результат в одном из немаркированных полей. Тем не менее, единственное решение, которое я видел для добавления неименованного свойства внутри объекта, - использовать аннотацию @Transient, что означает, что свойство не будет сериализоваться.Сериализация неотображенного свойства в объекте JPA

Любые идеи/обходные пути?

+2

Аннотации '@ Transient' предназначены только для JPA. Если вы сериализуете объект, атрибут будет сериализован как обычно (если у него нет модификатора 'transient' ** **). Так что используйте аннотацию @Transient, так как это правильный способ делать то, что вы хотите сделать. – Augusto

+0

Добавление @Transient из javax.persistence на самом деле не сериализует его для меня. – user3397214

+0

Откуда вы знаете, что это не сериализует его? –

ответ

0

Я ожидал бы ответ Rigre Garciandía на работу (т.е. использовать @Transient), но ...

Вы могли бы реализовать Externalizable. Это дает вам полный контроль над сериализации и десериализации, так что вы можете читать и писать любые поля, которые вы любите (и может улучшить производительность, как побочный эффект в моем опыте):

http://docs.oracle.com/javase/7/docs/api/java/io/Externalizable.html

2

Поля с @Transient аннотацию он должен быть сериализован с использованием сериализации Java api, проверьте, есть ли у вас модификатор переходный, этот модификатор не позволит вам сериализовать это поле.

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