У меня есть 3 элемента, как это:JPA MapKey с вложенными Атрибуты
public class ItemType {
@Id
private Long id = null;
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true, mappedBy = "itemTypeVO")
@MapKey(name = "company.id")
private Map<Long, ItemTypePurpose> purposeHash = null;
...
}
public class ItemTypePurpose {
@Id
private Long id = null;
...
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "idcompany")
private Company company = null;
...
}
public class Company {
@Id
private Long id = null;
...
}
Моя проблема, я хочу, идентификатор компании в качестве ключа моей карты внутри ItemType.
Я могу скомпилировать и развернуть приложение без каких-либо ошибок. Может сохраняться ItemType, и все хорошо подходит для DB. Но когда я верну его, ключ карты «неправильный», я не знаю, какая информация используется, но наверняка это не идентификатор компании. Возможно, идентификатор ItemTypePurpose.
Компания загружается на карту правильно, только ключ карты неверен. Я пытался использовать Google, но ничего не нашел. Может ли какой-либо способ JPA создать мою карту с этим «вложенным атрибутом»?
* Извините за мой английский, не стесняйтесь, если вы понимаете, что мне нужно, и можете лучше писать на английском, чтобы отредактировать мой вопрос.
Я подозреваю, что большинство из них просто использовали бы экземпляр компании в качестве ключа карты. – Chris
Может быть решением в зависимости от реализаций equals() и hash() и данных, заполненных внутри вашего объекта, иначе операция «get()» на карте может не вернуть ваш объект ... –