3

我在文档中读过“如果字符串字段被索引,它是 VARCHAR(255),否则它是 CLOB”

如果我不想索引字段,但需要 VARCHAR 表示怎么办?例如:

case class User(login: String, passwordHash: String, firstName: String, lastName: String, email: String, country: String, city: String, aboutMe: String);

只有登录名和电子邮件被索引,但 passwordHash、firstName、lastName、country、city 不应该是 CLOB,因为它是短字段,CLOB 对他们来说是压倒性的。如何将此字段标记为 VARCHAR?否则,aboutMe 可以包含长文本,所以应该是 CLOB。如果我不需要 max(255 个字符),如何限制 VARCHAR 字段的长度?例如,passwordHash 不能超过 32 个字符(当然取决于散列方法)

谢谢你。

4

1 回答 1

3

CLOB值声明的开销VARCHAR只是几个字节。SORM 背后的理念是所有约定优于配置。这种方法是在 SORM 中实现消除样板的基石。由于在当今时代,额外的几个千兆字节 - 这可能是填充数据库的这种开销的结果 - 存储空间几乎不是问题,因此决定使用这些设置以获得最大的兼容性。

由于 SORM 的样板方法,您无法对 API 公开的这些内容进行微调。尽管它们可能会在未来出现,但如果该问题引起关注,可能会作为Entity.

但是,如果您坚持要控制这些事情,则存在一个非常简单的解决方案:您让 SORM 以它的方式生成模式,然后使用您选择的数据库管理工具,您可以通过更改列、索引或任何。在列的文本类型(CLOB、VARCHAR 等)之间切换不会造成任何麻烦。

于 2012-11-29T16:53:23.477 回答