2015-02-12 120 views
0

我使用Eclipse - > JPA實體從表中獲取來自mysql數據庫的實體。所有表的主鍵 - ID都是int(11)AI PK。所以,而不是int或long,我得到所有鍵的字符串。我做錯了什麼?來自表的JPA實體將int主鍵轉換爲字符串

謝謝!

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name="LOCATION_ID") 
private String locationId; 
+0

使用「private int locationId;」而不是「private String locationId;」 – 2015-02-12 03:24:21

回答

2

Eclipse未正確解析主鍵的數據類型(int(11))。因此,Eclipse無法將適當的數據類型解析爲Java類型映射。由於缺少該映射,Eclipse將主鍵屬性的數據類型默認爲String。您可以從數據類型中刪除顯示寬度屬性(即(11)),Eclipse應該能夠更恰當地映射數據類型。

+0

謝謝!那就是問題所在。它看起來像MySQL默認添加(11)。我如何告訴MySQL停止這樣做? – topcan5 2015-02-13 17:04:45

+0

或者我如何告訴eclipselink這是一個Int列,而不是一個String列。 – topcan5 2015-02-13 17:17:33

+0

我對Eclipse DTP MySQL驅動程序不太瞭解,不知道爲什麼它將列的數據類型看作int(11)'。 DDL中定義的列是如何定義的?回答第二個問題:它是DTP(Eclipse插件)而不是EclipseLink,它是從MySQL返回的元數據中解析數據類型。除了現在正在做的事情之外,沒有簡單的方法來配置DTP來完成它。 – 2015-02-13 18:00:42

0

剛剛發現生成實體時,點擊ID和eclipselink將允許您選擇映射類型。選擇int而不是String將會做到這一點。