0
我使用Spring mvc與休眠,我有我的SQL服務器數據庫中的查找表。這個表有4列映射作爲外鍵而不是主鍵在sql server中的另一個關鍵
@Entity
@Table(name = "VLE_LOOKUP_DATA")
public class Lookup_Data{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long ID;
@Column(name = "ENTITYNAME")
private String ENTITYNAME;
@Column(name = "CODE")
private String CODE;
@Column(name = "DESCRIPTION")
private String DESCRIPTION;
}
這張表與多個表有一對一的關係,例如與學生表有一對一的關係。
@Entity
@Table(name = "STUDENT")
public class student{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long STUDENT_ID;
@OneToOne
@JoinColumn(name = "DEPARTMENT_ID")
private Lookup_Data DEPARTMENT_ID;
@Column(name = "Name")
private String Name;
@OneToOne
@JoinColumn(name = "GENDER_ID")
private Lookup_Data GENDER_ID;
}
這裏的外鍵來自查找表是不是查找data.its列名CODE這是在其他tables.That外鍵所引用的主鍵(ID)。這就是爲什麼當我運行這個例如OneToOne關係給出的錯誤爲
java.sql.SQLException: Conversion failed when converting the varchar to data type int.
因爲代碼是字符串值。
有沒有什麼辦法可以在中實現這個場景Spring Mvc啓動應用程序?
注意:在sql server此查詢可以做所需的工作。
SELECT * FROM STUDENT as e left join VLE_LOOKUP_DATA as di on e.DEPARTMENT_ID=di.CODE
原生查詢正在工作,但在普通pk的映射情況下,我們不需要使用連接查詢,而是使用fk.so自動填充我們可以在當前情況下得到這個結果 –
任何情況下,不支持不同數據類型之間的映射。 –
不同的數據類型是指int類型以外的其他類型嗎?就像在這種情況下它的字符串類型。 DEPARTMENT_ID(string) - > CODE(string),因爲在這裏我們不能指定哪個表列被引用爲外鍵。 –