【问题标题】:Unsigned Int in JPA and HibernateJPA 和 Hibernate 中的无符号整数
【发布时间】:2023-03-23 15:00:01
【问题描述】:

JPA(我使用 Hibernate)如何创建具有无符号类型的列?目前我所有的 ID 列都已签名。

【问题讨论】:

  • 无符号 SQL 类型,还是 Java 类型? Java 没有本机无符号数字类型。如果要使用无符号 SQL 类型,则必须将其映射到足够大(有符号)的 Java 类型。例如,无符号的 32 位整数类型必须存储在(有符号的)Java long 中。
  • 我想使用无符号 SQL 类型。
  • 那么答案就是将它们映射到 Java long 字段。
  • 我知道,我正在寻找让 hibernate 为我创建未签名列的方法。默认情况下,hibernate 将我的(已签名)java long 映射到已签名的 Bigint(20)。我想将列设为 unsigned int(11)。
  • 如何配置映射? XML 还是注释?您是否使用 Hibernate 生成架构?

标签: hibernate jpa


【解决方案1】:

使用columnDefinition property on the @Column annotation 应该可以做到。 猜测您要使用的 SQL 类型:

private long foo;

@Column(columnDefinition = "UNSIGNED INT(11)")
public long getFoo()
{
    return foo;
}

注意并非所有数据库(我认为像 SQL Server)都支持 unsigned int 类型。

【讨论】:

  • 在 MySQL 中,“UNSIGNED”这个词应该出现在 “INT(11)”之后。
猜你喜欢
  • 2013-10-02
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多