2012-12-10 31 views
2

我看到Sorm已經支持org.joda.time.DateTime。是否有可能添加對其他類型的支持?如何在Sorm中添加自定義值類型?

例如,我的案例類有一個java.nio.charset.CharsetLocale字段,我想將其轉換爲字符串。假設我有完成從自定義類型到SQL類型的轉換的功能,我該如何告訴Sorm使用它?

回答

2

SORM對某一數據類型的支持是相當不只是轉換和從SQL類型的能力更復雜。某些類型的值可能跨越多列(例如Tuple,Range),其他類型可能需要中間表(Seq,Set,Map),並且它們都需要單獨的方法來轉換查詢子句。所有這些都會導致一個非常複雜的ad-hoc類型映射API,如果要暴露的話。

但是,上述事實並非是爲什麼這樣的API沒有被暴露並且很可能永遠不會出現的原因。你看,SORM的哲學基本上都是關於純粹的不可變數據模型,而設計這種模型最簡潔的方法就是使用標準Scala的不可變數據類型和案例類。

因此,用SORM設計應用程序的乾淨方式是將那些有狀態的Java類轉換爲應用程序中的不可變值。例如,您可以在您的模型中實現自定義case class Charset (...),將其註冊到SORM的實例,並讓您的轉換函數在您的應用程序中的此類型和Java中的轉換函數之間工作。除此之外,你可以實現這個Charset作爲Enumeration,這似乎是最合適的。

關於您對Joda Time類型支持的爭論,主要是因爲需要某些數據類型來表示SQL的時間戳。看到這個邏輯與你所想的相反。

+0

感謝您的精心解答! – Hbf

相關問題