Получить запись из таблицы, используя внешний ключ (Hibernate) - PullRequest
0 голосов
/ 04 января 2019

Я изучаю, как использовать Hibernate, и у меня есть вопрос, касающийся запросов к таблицам, которые имеют отношение один к одному.

Есть две таблицы, Employee и Account, которые имеют отношение один к одному. Первичный ключ для Employee - это идентификатор сотрудника. Я хочу использовать этот идентификатор для Account и понимаю, что его можно определить как внешний ключ в таблице Account.

@Entity
@Table
public class Employee
{
    @Id
    private int employeeId;
}

@Entity
@Table
public class Account
{
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "employeeId", referencedColumnName = "employeeId", nullable=false, insertable=false, updatable=false, foreignKey = @ForeignKey(name="FK_Account_Employee"))
    private Employee employee;
}

Обратите внимание, что Account не имеет дополнительного поля id. Внешний ключ идентификатора сотрудника является уникальным. Это приемлемо?

Я объявил интерфейс хранилища для Account следующим образом:

@Repository
public interface AccountRepository extends JpaRepository<Account, Integer>
{
}

Как получить запись из этой таблицы, используя идентификатор сотрудника?

например. что-то вроде

accountRepository.getOne(employeeId)

1 Ответ

0 голосов
/ 04 января 2019

Вы можете добавить следующий метод в свой репозиторий.

Из метода именования Spring Data JPA это должно извлечь ваш Account из поля id его Employee объекта:

Account findByEmployee_Id(Integer employeeId)
...