Я изучаю, как использовать 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)