...
MariaDB [controlloop]> select * from JpaExampleObjMapEc_EXAMPLES;
+-----------------+---------+---------------+------------------+--------------+
| name | version | examples_name | examples_version | examples_KEY |
+-----------------+---------+---------------+------------------+--------------+
| ExampleObjMapEc | 1.0.0 | example1 | 1.0.0 | MyKey1 |
| ExampleObjMapEc | 1.0.0 | example2 | 1.0.0 | MyKey2 |
+-----------------+---------+---------------+------------------+--------------+
Map of Objects using ElementCollection (fixed)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
@Data
@Embeddable
public class JpaExampleEmd implements Serializable {
private static final long serialVersionUID = 1L;
@VerifyKey
@NotNull
@AttributeOverride(name = "name", column = @Column(name = "child_name"))
@AttributeOverride(name = "version", column = @Column(name = "child_version"))
private ExampleKey key;
@Column
private Boolean primed;
@Column(name = "timeStamp", precision = 3)
@Temporal(TemporalType.TIMESTAMP)
@NotNull
private Date timeStamp;
}
@Entity
@Table(name = "ExampleObjMapEc")
@Data
@EqualsAndHashCode
public class JpaExampleObjMapEc implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
@VerifyKey
@NotNull
private ExampleKey key;
@ElementCollection
private Map<@NotNull String, @NotNull JpaExampleEmd> examples;
} |
Eclipse-Link
MariaDB [controlloop]> SHOW CREATE TABLE JpaExampleObjMapEc_EXAMPLES;
+-----------------------------+-------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------------------+-------------------------------------------------------------------------------------------------------+
| JpaExampleObjMapEc_EXAMPLES | CREATE TABLE `JpaExampleObjMapEc_EXAMPLES` (
`EXAMPLES_KEY` varchar(255) DEFAULT NULL,
`PRIMED` tinyint(1) DEFAULT 0,
`timeStamp` varchar(255) DEFAULT NULL,
`child_name` varchar(255) DEFAULT NULL,
`child_version` varchar(255) DEFAULT NULL,
`name` varchar(120) DEFAULT NULL,
`version` varchar(20) DEFAULT NULL,
KEY `FK_JpaExampleObjMapEc_EXAMPLES_name` (`name`,`version`),
CONSTRAINT `FK_JpaExampleObjMapEc_EXAMPLES_name` FOREIGN KEY (`name`, `version`)
REFERENCES `ExampleObjMapEc` (`name`, `version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-----------------------------+-------------------------------------------------------------------------------------------------------+
After saving the example:
MariaDB [controlloop]> select * from ExampleObjMapEc;
+---------------+---------+
| name | version |
+---------------+---------+
| ExampleObjMap | 1.0.0 |
+---------------+---------+
MariaDB [controlloop]> select * from JpaExampleObjMapEc_EXAMPLES;
+--------------+--------+-----------+------------+---------------+---------------+---------+
| EXAMPLES_KEY | PRIMED | timeStamp | child_name | child_version | name | version |
+--------------+--------+-----------+------------+---------------+---------------+---------+
| MyKey2 | NULL | NULL | example2 | 1.0.0 | ExampleObjMap | 1.0.0 |
| MyKey1 | NULL | NULL | example1 | 1.0.0 | ExampleObjMap | 1.0.0 |
+--------------+--------+-----------+------------+---------------+---------------+---------+