Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleJpaExample
@Embeddable
@Getter
@ToString@Data
public class ExampleKey implements Serializable {

    private static final long serialVersionUID = 1L;

    @Column(name = "name", length = 120)
    private String name;

    @Column(name = "version", length = 20)
    private String version;
}

@Entity
@Table(name = "Example")
@Data
@EqualsAndHashCode
public class JpaExample implements Serializable {

    private static final long serialVersionUID = 1L;

    @EmbeddedId
    @VerifyKey
    @NotNull
    private ExampleKey key;

    @Column
    private Boolean primed;

    @Column(name = "timeStamp", precision = 3)
    @Temporal(TemporalType.TIMESTAMP)
    @NotNull
    private Date timeStamp;
}

...

Code Block
languagejava
titleJpaExampleObjMap
@Entity
@Table(name = "ExampleObjMap")
@Data
@EqualsAndHashCode
public class JpaExampleObjMap implements Serializable {

    private static final long serialVersionUID = 1L;

    @EmbeddedId
    @VerifyKey
    @NotNull
    private ExampleKey key;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = @ElementCollectiontrue)
    @Lob
    private Map<@NotNull String, @NotNull JpaExample> examples;
}

...

MariaDB [controlloop]> SHOW CREATE TABLE JpaExampleObjMap_EXAMPLES;
+---------------------------+---------------------------------------------------------------------------------------------------------+
| Table                     | Create Table                                                                                            |
+---------------------------+---------------------------------------------------------------------------------------------------------+
| JpaExampleObjMap_EXAMPLES | CREATE TABLE `JpaExampleObjMap_EXAMPLES` (
`name` varchar(120) DEFAULT NULL,
  `version` varchar(20) DEFAULT NULL,
  `EXAMPLES` longblob DEFAULT NULL,
  `EXAMPLES_KEY` varchar(255) DEFAULT NULL,
  KEY `FK_JpaExampleObjMap_EXAMPLES_name` (`name`,`version`),
  CONSTRAINT `FK_JpaExampleObjMap_EXAMPLES_name` FOREIGN KEY (`name`, `version`)
REFERENCES `ExampleObjMap` (`name`, `version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+---------------------------+---------------------------------------------------------------------------------------------------------+


Hibernate

MariaDB [controlloop]> SHOW CREATE TABLE JpaExampleObjMap_EXAMPLES;
+---------------------------+---------------------------------------------------------------------------------------------------------+
| Table                     | Create Table                                                                                            |
+---------------------------+---------------------------------------------------------------------------------------------------------+
| JpaExampleObjMap_EXAMPLES | CREATE TABLE `JpaExampleObjMap_EXAMPLES` (
`name` varchar(120) NOT NULL,
  `version` varchar(20) NOT NULL,
`examples_name` varchar(120) NOT NULL,
  `examples_version` varchar(20) NOT NULL,
  `examples_KEY` varchar(255) NOT NULL,
  PRIMARY KEY (`name`,`version`,`examples_KEY`),
  UNIQUE KEY `UK_dtga5qcrtu3v2yq7ptbjyqba8` (`examples_name`,`examples_version`),
  CONSTRAINT `FK8elsnf63fwlyny8wfl2urejss` FOREIGN KEY (`examples_name`, `examples_version`)
REFERENCES `Example` (`name`, `version`),
  CONSTRAINT `FKnkx26gxv04oxbyffxk1h07k1g` FOREIGN KEY (`name`, `version`)
REFERENCES `ExampleObjMap` (`name`, `version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+---------------------------+---------------------------------------------------------------------------------------------------------+

MariaDB [controlloop]> SELECT * FROM JpaExampleObjMap_EXAMPLES;
+---------------+---------+---------------+------------------+--------------+
| name          | version | examples_name | examples_version | examples_KEY |
+---------------+---------+---------------+------------------+--------------+
| ExampleObjMap | 1.0.0   | example1      | 1.0.0            | MyKey1       |
| ExampleObjMap | 1.0.0   | example2      | 1.0.0            | MyKey2       |
+---------------+---------+---------------+------------------+--------------+