Versions Compared

Key

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

...

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
languagejava
titleJpaExampleObjMap
collapsetrue
@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   |
+--------------+--------+-----------+------------+---------------+---------------+---------+

Hibernate