У меня есть ситуация, когда я хотел бы сослаться на имя и фамилию пользователя, который обновил объект задачи.Это должно быть прямое извлечение, но Hibernate не связывает ассоциации, как я ожидаю.Вот определения объектов:
Task Object:
@Entity
@Table(name = "TASKS")
public class TaskBean {
...
@ManyToOne(targetEntity = UserBean.class, optional=true)
@JoinColumn(name="MODIFIED_BY", referencedColumnName="EMPLOYEE_ID")
public User getUser()
...
User Object:
@Entity
@Table(name = "USER_")
@SecondaryTable(name="LOCAL_USER",
pkJoinColumns={
@PrimaryKeyJoinColumn(name="PORTAL_USER_ID", referencedColumnName="USERID")})
public class UserBean {
private BigDecimal userId; // USERID
private String firstName; // FIRSTNAME
private String lastName; // LASTNAME
private String employeeId; // EMPLOYEE_ID
....
@Column(name="EMPLOYEE_ID", table="LOCAL_USER", updatable=false, insertable=false)
public String getEmployeeId() {
return employeeId;
}
Проблема в определении @ManyToOne в TaskBean.Когда я пытаюсь запустить модульный тест для TaskBeans, я получаю следующее исключение:
org.hibernate.MappingException: невозможно найти столбец с логическим именем: EMPLOYEE_ID в org.hibernate.mapping.Table (USER_) и связанных с ним супертаблиц и вторичных таблиц
Это не имеет смысла для меня, поскольку я четко определил поле EMPLOYEE_ID в UserBean.Разве это невозможно сделать, так как это поле происходит из вторичной таблицы?Это сообщение об ошибке звучит так, как будто это разумная вещь.
Есть предложения?