Вы можете аннотировать строку javax.persistence.Lob
.
@Lob
@Basic(fetch = FetchType.LAZY)
private String simpleString;
См Lob
Javadoc:
Указывает, что постоянное свойство или поле должно быть сохранено в качестве крупного объекта к большому типу объектов базы данных при поддержке. Переносные приложения должны использовать аннотацию Lob при сопоставлении с типом Lob базы данных. Аннотацию Lob можно использовать в сочетании с аннотацией Basic
или аннотацией ElementCollection
, когда значение набора элементов имеет базовый тип. Lob может быть либо двоичным, либо символьным.
Тип Lob
определяется исходя из типа постоянного поля или свойства и за исключением строковых и символьных типов по умолчанию для Blob.
Далее вы можете установить Bar
поле для transient
, так что это не сохранялось:
@Transient
private Bar bar
Затем в Bar
добытчика, вы можете deserialise его при необходимости: безопасность
public Bar getBar()
{
if (this.bar == null)
{
this.bar = deserialise(this.simpleString);
}
return this.bar;
}
Thread остается в качестве упражнения для читателя.
Кроме того, вы также можете использовать @PrePersist
для сериализации Bar
в свою строчную форму, если вам нужно сделать это непосредственно перед сохранением.
* Как * вы можете сериализовать его в строку? –