Я изучаю, как использовать Hibernate, и у меня есть вопрос, касающийся идентификаторов для таблиц, которые имеют отношение один к одному.
Есть две таблицы, Employee
и Account
, которые имеют отношение один к одному. Первичный ключ для Employee
- это идентификатор сотрудника. Я хочу использовать этот идентификатор для Account
и понимаю, что его можно определить как внешний ключ в таблице Account
.
@Entity
@Table
public class Employee
{
@Id
private int employeeId;
}
@Entity
@Table
public class Account
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int tempId;
@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, которое мне не нужно, поскольку внешний ключ идентификатора сотрудника является уникальным. Если я удаляю tempId
, тогда я получаю исключение во время выполнения.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.company.entity.Account
Можно ли объявить Account
без этого дополнительного идентификатора?