使用休眠保存嵌套的POJO类对象

时间:2018-08-13 12:40:46

标签: java hibernate spring-boot spring-data-jpa

Class1:

int field2
Class2 field1

Class2:

Class3 field3

Class3:

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。我正在为我的repo接口扩展JPARepository。我想在数据库中保存class1。我收到以下异常消息:

  

org.springframework.orm.jpa.JpaSystemException:无法序列化;   嵌套的异常是org.hibernate.type.SerializationException:可以   没有序列化...

     

由以下原因引起:org.hibernate.type.SerializationException:无法   序列化....

     

原因:java.io.NotSerializableException:com.model.Class3 ...

尝试了@ElementCollection但没有用。请帮忙。

1 个答案:

答案 0 :(得分:0)

您应该创建嵌套类@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)
);

另一种有趣的方法是将嵌套类作为 JSON 存储在数据库中,请参见我相关的answer ...