【问题标题】:Alternative to make primary key column varchar(max)替代主键列 varchar(max)
【发布时间】:2020-08-30 16:11:08
【问题描述】:

我有一个 JPA 实体,它有一个字符串 @Id,在我尝试过的某些情况下,该 id 的长度可能很长(6000 或更多)

 @Id
 @Column(name = "ID")
 @Lob
 private String id;

但是在尝试之后我知道我无法在 SQL Server 中使用varchar(max)(我不知道其他数据库)。 现在我想要这个问题的解决方案。提前致谢。

【问题讨论】:

  • 最佳做法是不要将长字符串作为您的 PK - 而int 更正常。
  • 什么实体有这么长的字符串作为自然键?
  • 用于缓存键@DanGuzman。但它在两个三个特殊情况下。

标签: java sql-server spring hibernate jpa


【解决方案1】:

您应该以某种方式保证您的 id 是唯一的 但是使用简单的字符串字段虽然很长,但不能保证是唯一的 这就是数据库提供 GUID 的原因。

【讨论】:

    【解决方案2】:

    如果 ID 的预期长度较长,则最好使用简单的自增整数列作为主键。这样做的原因是为了避免在该键上使用联接时的处理开销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2012-09-23
      • 2013-01-10
      • 2011-02-11
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多