Сохранить вложенные объекты класса POJO с использованием спящего режима

Класс1:

int field2
Class2 field1

Класс2:

Class3 field3

Класс3:

String field4
String field5

Класс класса Class1:

@Table(name = "class1_details")
@Entity
public class Class1Details {
  @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "class2_fields")
    private Class2 fields;

     // respective getters and setters

}

Я использую springboot. Я расширяю JPARepository для моего интерфейса репо. Я хочу сохранить class1 в db. Я получаю ниже исключения:

org.springframework.orm.jpa.JpaSystemException: не удалось выполнить сериализацию; Вложенное исключение - org.hibernate.type.SerializationException: не удалось сериализовать ... Вызвано: org.hibernate.type.SerializationException: не удалось сериализовать .... Причинено: java.io.NotSerializableException: com.model.Class3. ..

Tried @ElementCollection, но бесполезно. Пожалуйста, помогите с этим.

0
задан 13 August 2018 в 15:40

1 ответ

Вы должны сделать вложенные классы @Embeddable:

@Entity
@Table(name = "my_entities")
public class MyEntity {
    //...

    private MyData data;
}

@Embeddable
public class MyData {
    private String value;
}

Тогда Hibernate будет иметь дело со следующей таблицей:

create table my_entities (
  -- MyEntity stuff
  --
  value varchar(255)
);

Еще один интересный подход - это хранение вложенного класса в DB как JSON, см. мои связанные @Embeddable ...

0
ответ дан 15 August 2018 в 17:00

Другие вопросы по тегам:

Похожие вопросы: