В JPA - карта встраиваемых значений, в которой в качестве ключа используется встроенная сущность - PullRequest
3 голосов
/ 02 мая 2010

Я все еще новичок в JPA (и в Hibernate, который я использую в качестве своего провайдера), поэтому, возможно, это просто невозможно, но в любом случае ...

Рассмотрим следующий код:

@Entity
class Root {
    @Id
    private long id;
    private String name;

    @ElementCollection
    private Map<ResourceType, Resource> resources;
    ...
}

@Entity
class ResourceType {
    @Id
    private long id;

    private String name;
}

@Embeddable
class Resource {
    private ResourceType resourceType;
    private long value;
}

В базе данных есть таблица сбора Root_resources, в которой хранятся значения карты, но тип ресурса отображается дважды (фактически, идентификатор типа ресурса отображается), один раз как KEY карты, и один раз как часть значения.

Есть ли способ, аналогичный, скажем, аннотации @MapKey, указать, что ключ является одним из столбцов значения (т. Е. Встроен)?

1 Ответ

0 голосов
/ 03 мая 2010

Я думаю, что вы просите что-то вроде:

@MapKeyJoinColumn("RESOURCE_TYPE_ID")

в коллекции элементов.

Затем также укажите имя столбца для сопоставления FK типа ресурса в вашей встраиваемой структуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...