Встречается на собеседованиях • сегодня

Как писать составной ключ в Hibernate

Составной ключ в Hibernate можно реализовать несколькими способами:

  1. Использование @EmbeddedId
    Создаем класс-ключ с аннотацией @Embeddable и встраиваем его в сущность через @EmbeddedId:
java
@Embeddable
public class EmployeeId implements Serializable {
    private String department;
    private Long employeeNumber;
    // equals(), hashCode()
}

@Entity
public class Employee {
@EmbeddedId
private EmployeeId id;
// другие поля
}

text

2. **Использование `@IdClass`**  
   Ключ описывается отдельным классом, а в сущности поля дублируются с `@Id`:

```java
public class ProjectId implements Serializable {
    private String client;
    private String projectCode;
    // equals(), hashCode()
}

@Entity
@IdClass(ProjectId.class)
public class Project {
    @Id
    private String client;
    @Id
    private String projectCode;
    // другие поля
}

Важно:

  • Класс ключа должен быть Serializable
  • Обязательно переопределять equals() и hashCode()
  • Для @EmbeddedId поля ключа автоматически становятся колонками сущности
  • @IdClass удобен при наследовании или работе с legacy-кодом
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы