我已阅读文档“如果字符串字段已编入索引,则为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的哈希方法)
谢谢。
答案 0 :(得分:3)
CLOB
上VARCHAR
值声明的开销只是几个字节。 SORM背后的哲学是所有关于配置的约定。这种方法是如何在SORM中消除样板的基石。由于在这个时代,几个额外的千兆字节 - 这可能是填充数据库的这种开销的结果 - 存储空间几乎不是问题,因此决定使用这些设置以获得最大兼容性。
由于SORM采用样板文件,因此没有方法可以微调API公开的这些内容。虽然它们可能会在将来出现,但如果问题得到显着关注,可能会作为Entity
的附加属性。
如果您坚持要控制这些事情,那么存在一个非常简单的解决方案:让SORM以它的方式生成模式,然后使用您选择的数据库管理工具,通过更改列来微调数据库,索引或其他什么。在文本类型的列(CLOB,VARCHAR等)之间切换不应该引起任何麻烦。