2016-05-23 32 views
0

在卡桑德拉表中,我把類,其中一個字段是AnyContent類型。我將它序列化爲字節數組。比我想從這個專欄到我的班級。我可以在方法得到它fromRow(row: Row)只喜歡如何從Blob列中返回play.api.mvc.AnyContent值?

AnyContentAsText(TypeCodec.varchar().deserialize(body(row), 
ProtocolVersion.NEWEST_SUPPORTED)) 

只有這樣的方式將其編譯

但它返回AnyContent(AnyContentAsJson({"body":"value"})比很難解析和從它那裏得到JSON值。

也許有一些直接的方式把它簡單地

回答

0

簡單的回答是,你不這樣做,你要的戰略可能不是最好的主意。在AnyContent內部封裝了很多變體,值得多花一點時間來理解Play Framework內部扮演的角色,這比它看起來更復雜一些。

您需要從頭開始編碼各種各樣的解碼器,以便您可以重新創建編碼爲AnyContent的原始響應,盡我所知這並不是框架提供的內容。

相反,您真正要做的是以域爲中心的方法,您的數據庫知道您的業務對象,而不是您使用的HTTP框架。理想情況下,數據庫模塊和Web框架模塊應該在應用程序內完全分離,並且HTTP層應該依賴於數據庫層,而不是相反。

所以我可以進一步的幫助,如果將有助於理解你想要達到的目標。如果您只是想將JSON存儲在Cassandra blob中,那麼由於這個原因,您已經擁有了JsonColumn

查看詳情,請看here