Sobes.tech
Назад к вопросам
Junior — Middle
105

Применяли ли вы составные ключи при работе с Hibernate?

Компании, где спрашивали
Северсталь-ИфокомСеверсталь-Ифоком

Ответ от нейросети

sobes.tech AI

В Hibernate составные ключи (composite keys) используются для идентификации сущности с помощью нескольких полей вместо одного. Это бывает необходимо, когда уникальный идентификатор объекта формируется из комбинации нескольких атрибутов.

Для реализации составного ключа в Hibernate обычно создают отдельный класс, который реализует Serializable и содержит все поля ключа. Этот класс используется с аннотацией @Embeddable или как @IdClass.

Пример с использованием @Embeddable:

@Embeddable
public class OrderItemId implements Serializable {
    private Long orderId;
    private Long productId;

    // конструкторы, equals, hashCode
}

@Entity
public class OrderItem {
    @EmbeddedId
    private OrderItemId id;

    private int quantity;
    // другие поля и методы
}

Таким образом, Hibernate понимает, что идентификатор сущности состоит из нескольких полей, и корректно работает с ними при сохранении и поиске.