我在嘗試將遺留Oracle數據庫映射到Hibernate時出現了一些問題。更具體地說,我不能得到一個正確的繼承 - 映射工作。我一直在使用的示例是Person-Employee-Relationship。在我們的數據庫中,表格是獨立的,所以唯一的映射策略將被加入。現在問題是Employee的PK由EmployeeId和CompanyId組成,PersonId只是普通的FK。如果不改變當前運行的系統,就無法改變這種狀況。
這裏是人與員工當前代碼:Hibernate:繼承映射到傳統數據庫
Person.class
@Entity
@Table (name = "personas")
@Inheritance (strategy = InheritanceType.JOINED)
public class Person {
private String personId;
private boolean physical;
private String name;
private String fantasyName;
private char gender;
@Id
@Column (name = "cod_persona")
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
//rest of setters and getters
}
Employee.class:
@Entity
@Table (name = "rh_empleados")
@PrimaryKeyJoinColumn (name = "cod_persona")
public class Employee extends Person {
private Company company;
private String employeeId;
private Integer finalSalary;
private Branch branch;
@Basic (optional = false)
@ManyToOne
@JoinColumn (name = "cod_empresa")
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
@Basic (optional = false)
@Column (name = "cod_empleado")
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
//rest of setters and getters
}
什麼已經工作:創建或刪除一個新的僱員或人 不起作用的是:選擇已經存在的員工或人員,我沒有得到任何異常或者什麼都不返回。
它必須與繼承有關,因爲與不在繼承層次結構中的另一個實體完美地工作。
任何提示/想法/解決方法或我擰?
Everthing將不勝感激。
在此先感謝。
編輯:顯然創建或刪除員工現在不工作,或者哪種更有意義。我得到「未能轉換爲內部表示」。
沒有人有想法嗎?或者至少可以告訴我,這肯定不會起作用?我真的很感激。 –