我看到Sorm已经支持org.joda.time.DateTime
. 是否有可能添加对其他类型的支持?
例如,我的案例类有一个java.nio.charset.Charset
orLocale
字段,我想将其转换为字符串。假设我有函数来完成从自定义类型到 SQL 类型的转换,我如何告诉 Sorm 使用它?
SORM 对特定数据类型的支持比仅仅转换为 SQL 类型和从 SQL 类型转换的能力要复杂得多。某些类型的值可能跨越多个列(例如 Tuple、Range),其他类型的值可能需要中间表(Seq、Set、Map),并且它们都需要单独的方法来翻译查询子句。如果要公开一个,所有这些都会导致一个非常复杂的临时类型映射 API。
但问题是,上述情况确实不是这样的 API 没有公开的原因,而且很可能永远不会公开。你看,SORM 的哲学本质上都是关于纯不可变数据模型的,而设计这种模型的最简洁方法是使用标准 Scala 的不可变数据类型和案例类。
因此,使用 SORM 设计应用程序的简洁方法是将那些有状态的 Java 类转换为应用程序中的不可变值。例如,您可以case class Charset (...)
在您的模型中实现自定义,将其注册到 SORM 的实例,并让您的转换函数在此类型和应用程序中的 Java 类型之间工作。除此之外,您可以将其实现Charset
为Enumeration
,这似乎是最合适的。
关于您关于 Joda Time 类型支持的论点,主要是因为需要一些数据类型来表示 SQL 的时间戳。将此逻辑视为与您的想法相反。