我使用Eclipse - > JPA實體從表中獲取來自mysql數據庫的實體。所有表的主鍵 - ID都是int(11)AI PK。所以,而不是int或long,我得到所有鍵的字符串。我做錯了什麼?來自表的JPA實體將int主鍵轉換爲字符串
謝謝!
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="LOCATION_ID")
private String locationId;
我使用Eclipse - > JPA實體從表中獲取來自mysql數據庫的實體。所有表的主鍵 - ID都是int(11)AI PK。所以,而不是int或long,我得到所有鍵的字符串。我做錯了什麼?來自表的JPA實體將int主鍵轉換爲字符串
謝謝!
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="LOCATION_ID")
private String locationId;
Eclipse未正確解析主鍵的數據類型(int(11)
)。因此,Eclipse無法將適當的數據類型解析爲Java類型映射。由於缺少該映射,Eclipse將主鍵屬性的數據類型默認爲String
。您可以從數據類型中刪除顯示寬度屬性(即(11)
),Eclipse應該能夠更恰當地映射數據類型。
謝謝!那就是問題所在。它看起來像MySQL默認添加(11)。我如何告訴MySQL停止這樣做? – topcan5 2015-02-13 17:04:45
或者我如何告訴eclipselink這是一個Int列,而不是一個String列。 – topcan5 2015-02-13 17:17:33
我對Eclipse DTP MySQL驅動程序不太瞭解,不知道爲什麼它將列的數據類型看作int(11)'。 DDL中定義的列是如何定義的?回答第二個問題:它是DTP(Eclipse插件)而不是EclipseLink,它是從MySQL返回的元數據中解析數據類型。除了現在正在做的事情之外,沒有簡單的方法來配置DTP來完成它。 – 2015-02-13 18:00:42
剛剛發現生成實體時,點擊ID和eclipselink將允許您選擇映射類型。選擇int而不是String將會做到這一點。
使用「private int locationId;」而不是「private String locationId;」 – 2015-02-12 03:24:21