0

Below are the entity classes and the methods I have written . When I tries to insert the entities using Spring Data JPA , I am stetting all the values properly and the entities are getting saved . But according the hibernate mapping that I have done in the entity classes , the metadata entity should have the reference of the definition entity. But the save operation I see that the definition reference in metadata table is null.

{
        @Entity
        @Table(name = "tbl_oval_metadata")
        @TypeDef(name = "JsonDataUserType", typeClass = JsonDataUserType.class)
        @Setter
        @Getter
        public class ScapOvalMetaDataEntity implements Serializable {

            private static final long serialVersionUID = -396508789136807102L;

            @Id
            @GeneratedValue(generator = "uuid")
            @GenericGenerator(name = "uuid", strategy = "uuid2")
            @Column(name = "metadata_id", unique = true, updatable = false, nullable = false)
            private UUID metaDataId;

            @Type(type = "JsonDataUserType")
            @Column(name = "metadata_attribute")
            private Map<String, String> metaDataAttribute;

            @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
            @JoinColumns({ @JoinColumn(name = "definition_id", insertable = false, updatable = false),
                    @JoinColumn(name = "oval_component_ref", insertable = false, updatable = false) })
            private ScapOvalDefinitionEntity definitionRef;
        }


        @Entity
        @Table(name = "tbl_oval_definition")
        @TypeDef(name = "JsonDataUserType", typeClass = JsonDataUserType.class)
        @Setter
        @Getter
        public class ScapOvalDefinitionEntity implements Serializable {

            private static final long serialVersionUID = -6519931678692523212L;

            @EmbeddedId
            private DefinitionEmbededdableKey definitionEmbeddableKey;

            @Column(name = "definition_class")
            private String definitionClass;

            @Type(type = "JsonDataUserType")
            @Column(name = "definition_attribute")
            private Map<String, String> definitionAttribute;

            @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "definitionRef")
            private ScapOvalMetaDataEntity metaData;

        }


        @Embeddable
        @Setter
        @Getter
        @EqualsAndHashCode
        @ToString
        public class DefinitionEmbededdableKey implements Serializable{

            private static final long serialVersionUID = -7612918663883354788L;

            @Column(name = "definition_id", unique = true, nullable = false)
            private String definitionId;

            @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
            @JoinColumn(name = "oval_component_ref", nullable = false)
            private ScapOvalDefinitionComponentEntity ovalComponentRef;


        }


        definitionDAO.save(Utilities.modelToEntityConverter(scapProcessor, ovalComponentEntity));


        public static List<ScapOvalDefinitionEntity> modelToEntityConverter(ScapParser scapProcessor,
                    ScapOvalDefinitionComponentEntity ovalComponentEntity) {
                List<ScapOvalDefinitionEntity> definitionEntities = new ArrayList<>();
                Set<Definition> definitionSet = scapProcessor.getDefinitionSet();
                for (Definition definition : definitionSet) {
                    definitionEntities.add(modelToEntityConverter(scapProcessor, definition, ovalComponentEntity));
                }
                return definitionEntities;
            }

        private static ScapOvalDefinitionEntity modelToEntityConverter(ScapParser scapProcessor, Definition definition,
                    ScapOvalDefinitionComponentEntity ovalComponentEntity) {
                ScapOvalDefinitionEntity definitionEntity = new ScapOvalDefinitionEntity();
                DefinitionEmbededdableKey definitionEmbededdableKey = new DefinitionEmbededdableKey();
                definitionEmbededdableKey.setDefinitionId(definition.getDefinitionId());
                definitionEmbededdableKey.setOvalComponentRef(ovalComponentEntity);
                definitionEntity.setDefinitionEmbeddableKey(definitionEmbededdableKey);
                definitionEntity.setDefinitionAttribute(definition.getDefinitionAttribute());
                definitionEntity.setDefinitionClass(definition.getDefinitionClass());
                definitionEntity.setMetaData(modelToEntityConverter(definition, definitionEntity));strong text
                return definitionEntity;
            }



        private static ScapOvalMetaDataEntity modelToEntityConverter(Definition definition,
                    ScapOvalDefinitionEntity definitionEntity) {
                ScapOvalMetaDataEntity metaDataEntity = new ScapOvalMetaDataEntity();
                metaDataEntity.setDefinitionRef(definitionEntity);
                metaDataEntity.setMetaDataAttribute(definition.getDefinitionMetaData().getMetaDataAttribute());
                return metaDataEntity;
            }


}
saikat_ds
  • 11
  • 2

0 Answers0