SORM:如果String应该是VARCHAR还是CLOB,我该如何管理?

时间:2012-11-29 16:07:20

标签: scala sorm

我已阅读文档“如果字符串字段已编入索引,则为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个字符(取决于cource的哈希方法)

谢谢。

1 个答案:

答案 0 :(得分:3)

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

由于SORM采用样板文件,因此没有方法可以微调API公开的这些内容。虽然它们可能会在将来出现,但如果问题得到显着关注,可能会作为Entity的附加属性。

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