【问题标题】:JPA Entities from Tables turns int primary key to String表中的 JPA 实体将 int 主键转换为字符串
【发布时间】:2015-02-12 03:18:58
【问题描述】:

我使用 Eclipse --> JPA Entities from Tables 从 mysql 数据库中生成实体。所有表的主键——ID 都是 int(11) AI PK。因此,我得到的不是 int 或 long,而是所有键的字符串。我做错了什么?

谢谢!

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

【问题讨论】:

  • 使用“private int locationId;”而不是“private String locationId;”

标签: java mysql hibernate jpa eclipselink


【解决方案1】:

Eclipse 未正确解析主键的数据类型 (int(11))。因此,Eclipse 无法解析适当的数据类型到 Java 类型的映射。由于缺少该映射,Eclipse 将主键属性的数据类型默认为String。您可以从数据类型(即(11))中删除显示宽度属性,Eclipse 应该能够更恰当地映射数据类型。

【讨论】:

  • 谢谢!那就是问题所在。看起来 MySQL 默认添加了 (11)。我怎样才能告诉 MySQL 停止这样做?
  • 或者我如何告诉eclipselink这是一个Int列,而不是一个String列。
  • 我对 Eclipse DTP MySQL 驱动程序了解得不够多,无法知道为什么它将您的列的数据类型视为int(11)。 DDL 中的列是如何定义的?回答第二个问题:从 MySQL 返回的元数据中解析数据类型的是 DTP(一个 Eclipse 插件),而不是 EclipseLink。除了现在做的事情之外,没有其他简单的方法可以配置 DTP。
【解决方案2】:

刚生成实体的时候发现,点击id,eclipselink会允许你选择映射类型。选择 int 而不是 String 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 2014-02-07
    • 2010-11-07
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多