Sormはすでに をサポートしているようですorg.joda.time.DateTime
。他のタイプのサポートを追加する可能性はありますか?
たとえば、ケース クラスにjava.nio.charset.Charset
orLocale
フィールドがあり、これを文字列に変換したいとします。カスタム型から SQL 型への/からの変換を行う関数があるとします。Sorm にそれを使用するように指示するにはどうすればよいでしょうか?
特定のデータ型に対する SORM のサポートは、SQL 型との間の変換機能よりもかなり複雑です。一部の型の値は複数の列にまたがる場合があり (Tuple、Range など)、中間テーブル (Seq、Set、Map) が必要な型もあり、それらはすべて、クエリ句を変換するための個別のアプローチを必要とします。公開された場合、非常に複雑なアドホック型マッピング API が作成されることになります。
しかし、実際には、そのような API が公開されていない理由は上記のとおりではなく、今後も公開されることはないでしょう。おわかりのように、SORM の哲学は本質的に純粋な不変データ モデルに関するものであり、そのようなモデルを設計する最もクリーンな方法は、標準の Scala の不変データ型とケース クラスを使用することです。
したがって、SORM を使用してアプリケーションを設計するためのクリーンな方法は、これらのステートフルな Java のクラスをアプリケーション内で不変の値に変換することです。たとえばcase class Charset (...)
、モデルにカスタムを実装し、それを SORM のインスタンスに登録して、この型とアプリケーション内の Java の型の間で変換関数を機能させることができます。Charset
それに加えて、これを として実装することもできます。これEnumeration
が最も適切と思われます。
Joda Time 型のサポートに関するあなたの議論に関しては、主に SQL のタイムスタンプを表すためにいくつかのデータ型が必要だったためです。このロジックは、あなたが考えていたものとは逆に見てください。