int field2
Class2 field1
Class3 field3
String field4
String field5
@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, но бесполезно. Пожалуйста, помогите с этим.
Вы должны сделать вложенные классы @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 ...