【问题标题】:Setting column length of a Long value with JPA annotations使用 JPA 注释设置 Long 值的列长度
【发布时间】:2010-04-08 14:00:11
【问题描述】:

我目前正在执行一些数据库优化,并希望通过 JPA 设置表中的列长度。到目前为止,我使用 JPA 设置字符串(varchar)长度没有问题,如下所示:

@Column(unique=true, nullable=false, length=99) 
public String getEmail() {
    return email;
}

但是,当我想对 Long (bigint) 类型的列执行相同操作时,它不起作用。例如,如果我写:

@Id
@Column(length=7)
@GeneratedValue(strategy = GenerationType.AUTO) 
public Long getId() {
    return id;
}

列大小仍设置为默认值 20。我们是否可以在 JPA 中设置这些长度,还是我在找错树?

谢谢, 齿轮。

【问题讨论】:

    标签: mysql jpa annotations


    【解决方案1】:

    精度、比例对于数字类型更有意义。还取决于 JDBC 驱动程序和 RDBMS 是否允许对特定列类型进行设置

    【讨论】:

    • 嗯,如果我设置 @Column(precision=7) 我的数据库客户端仍然告诉我它将接受 20 的长度(或精度)...
    • 不知道“它告诉你”是什么意思。 JPA 实现将使用这些值来创建 表。所以它应该使用它们生成一个 DDL 语句(假设 JDBC 驱动程序允许它)。 JPA 实现会告诉你正在使用什么 DDL(在日志中)
    【解决方案2】:

    您是否使用 Eclipse 作为您的 IDE?如果是这样,我建议您使用 Dali 插件(已安装)并激活“JPA 详细信息”视图。此视图将帮助您了解需要将哪些属性插入注释中。

    您可以使用 scale=7 而不是 length=7。但是 JPA 仍然会告诉数据库准备保存一个规模为 20 的 int。

    还要确保正确设置了数据库方言。

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多