2016-05-23 4 views
0

In Cassandra Tabelle lege ich Klasse, wo ein Feld AnyContent Typ ist. Ich serialisiere es zum Array von Bytes. Dann möchte ich es von dieser Spalte zu meiner Klasse bringen. Ich kann es in Verfahren erhalten fromRow(row: Row) nur wieWie zurück play.api.mvc.AnyContent Wert von Blob Spalte?

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

Nur so stellt es

Aber es gibt AnyContent(AnyContentAsJson({"body":"value"}) und als es schwierig ist, zu analysieren und daraus JSON Wert.

Vielleicht gibt es einige gerade so, wie es

Antwort

0

Die einfache Antwort einfach zu bekommen ist, dass Sie die Strategie, die Sie gehen für nicht die beste Idee nicht, sein könnte. Es gibt eine Menge Variationen, die in AnyContent eingekapselt sind und es lohnt sich, ein wenig mehr Zeit damit zu verbringen, zu verstehen, welche Rolle das Play Framework spielt, es ist ein bisschen komplexer als es auf den ersten Blick erscheint.

Sie müssten eine Vielzahl von Decodern von Grund auf neu codieren, damit Sie die ursprüngliche Antwort, die in AnyContent kodiert wurde, neu erstellen können, was meines Wissens nach nichts ist, was das Framework bietet.

Was Sie wirklich wollen, ist eher ein domänenorientierter Ansatz, bei dem Ihre Datenbank Ihre Geschäftsobjekte kennt und nicht, welches HTTP-Framework Sie verwenden. In einer idealen Welt sollten das Datenbankmodul und das Web-Framework-Modul innerhalb Ihrer Anwendung vollständig getrennt sein, und die HTTP-Schicht sollte von der Datenbankschicht abhängen und nicht umgekehrt.

So kann ich weitere Hilfe sein, wenn es nützlich wäre zu verstehen, was Sie erreichen wollen. Wenn Sie JSON einfach in Cassandra-Blobs speichern möchten, steht Ihnen aus diesem Grund bereits JsonColumn zur Verfügung.

Werfen Sie einen Blick auf here für Details.

Verwandte Themen