@Entity(name = "MapContainer")
@Table(name = "map_container")
public static class MapContainer {
@Id
private Long id;
@ManyToMany
@MapKey(name = "mapKey")
private Map<MapKeyEntity, MapValueEntity> map = new HashMap<>();
public MapContainer() { }
public MapContainer(Long id) {
this.id = id;
}
}
@Entity(name = "MapKeyEntity")
@Table(name = "map_key_entity")
public static class MapKeyEntity {
@Id
private Long id;
public MapKeyEntity() { }
public MapKeyEntity(Long id) {
this.id = id;
}
}
@Entity(name = "MapValueEntity")
@Table(name = "map_value_entity")
public static class MapValueEntity {
@Id
private Long id;
@ManyToOne(optional = false)
private MapContainer mapContainer;
@ManyToOne(optional = false)
@JoinColumn(unique = true)
private MapKeyEntity mapKey;
public MapValueEntity() { }
public MapValueEntity(Long id) {
this.id = id;
}
}