2012-02-06 37 views
0

我有一種情況,我想引用更新任務對象的用戶的名字和姓氏。這應該是一個直接的檢索,但Hibernate沒有像我期望的那樣連接關聯。以下是對象定義:相關輔助表上的Hibernate MappingException

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; 
    } 

問題出在TaskBean上的@ManyToOne定義。當我試圖運行對TaskBeans我得到以下異常的單元測試:

org.hibernate.MappingException:無法找到邏輯名稱列:在org.hibernate.mapping.Table(USER_)EMPLOYEE_ID和其相關的超類和副表

這對我來說沒有意義,因爲我明確定義了UserBean中的EMPLOYEE_ID字段。由於該字段來自輔助表格,是不是可以這樣做?錯誤消息使得它聽起來像這是一件合理的事情。

有什麼建議嗎?

+0

什麼是你正在使用Hibernate的版本? – 2012-02-06 19:42:53

+0

Hibernate Core 3.6.9.Final,Hibernate Commons Annotations 3.2.0.Final。我試着將Commons Annotations升級到最新版本(3.3.0),但這並沒有幫助。 – JJensL 2012-02-06 20:10:11

回答

0

如Hibernate的錯誤描述https://hibernate.atlassian.net/browse/HHH-7713

可以應用解決方法使用了重音符號,以確定您的referencedColumnName`

SecondaryTable(name="LOCAL_USER", 
    pkJoinColumns={ 
     @PrimaryKeyJoinColumn(name="PORTAL_USER_ID", referencedColumnName="`USERID`")})