2016-05-23 33 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