Cómo usar una propiedad de asociación secundaria como clave de mapa en la entidad principal JPA

Estoy teniendo dos entidadesCar yCarDescription dóndeCarDescription depende de otra clave externa de la tablaLanguage.

Lo que intento lograr es tener unHashMap enCar tal que cada vez que tenga unCar entidad-objeto Puedo acceder a todas las descripciones desde la identificación del idioma.

EntidadCar.java

@Entity
@Table(name = "Car")
public class Car extends AbstractTimestampEntity implements Serializable {
    private static final long serialVersionUID = -5041816842632017838L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID", unique = true, nullable = false)
    private Long id;

    @OneToMany(mappedBy="car")
    @MapKeyColumn(name = "language_ID")
    // @MapKey(name = "language") // does not work either 
    private Map<Long, CarDescription> carDescription = new HashMap<>(0);
}

EntidadCarDescription.java

@Entity
@Table( name="car_description",
        uniqueConstraints = {
            @UniqueConstraint(columnNames={"language_id", "name"}) 
        }
)
public class CarDescription extends AbstractTimestampEntity implements Serializable {
    private static final long serialVersionUID = 2840651722666001938L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID", unique = true, nullable = false)
    private Long id;

    @NotNull
    @ManyToOne
    private Car car;

    @NotNull
    @OneToOne
    private Language language;

    // ..
}

EntidadLanguage.java

@Entity
public class Language implements Serializable {
    private static final long serialVersionUID = 3968717758435500381L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="ID")
    private Long id;

    // ..
}

El problema que tengo es que el mapeo me da un mapa de cadaCarDescription.id aCarDescription.

¿Cómo puedo lograr un mapeo correcto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta