0

コンテキスト - GraniteDS + JPA DataNucleus + MySQL

シナリオは、データベースに画像を保存/取得することです。

問題は、FROM db の取得にあります。ブック カバーはデータベースから取得されますが、フレックス フロントでは null として表示されます。

Java の「Byte[]」からフレックスの「ByteArray」への変換で null が返されます。

以下は2つのクラスファイルです。

AcrionScript クラス

[RemoteClass(alias="com.app.model.Book")]
public class Book
{
    public var id:uint;
            public var cover:ByteArray;
    }

Java クラス

@Entity public class Book は Serializable{

@Id
private Long id;

@Lob
@Basic(fetch=FetchType.EAGER)
private Byte[] cover = null;

}

ありがとう

4

1 に答える 1

1

これはシリアル化の問題のようです。

大文字のBのバイトbyteは、プリミティブオブジェクトよりも複雑なラッパークラスです。

AMFシリアライザー/デシリアライザーはイントロスペクションで動作するため、これは重要な事実です。
すべての非プリミティブオブジェクトには、通信チャネルの両端にあるすべてのパブリックプロパティを含む特定のクラスが必要です。

このByteクラスはプリミティブ型ではないため、デフォルトではAMFシリアライザー/デシリアライザーによって認識されないためByte[]、JavaからFlexに送信するすべてのオブジェクトは自動的にnullに変換されます。

をに変更してみて、Byte[]それbyte[]がうまくいくかどうかを確認してください。

本当にByte[]を使用する必要がある場合は、オブジェクトを転送できるようにするためのカスタムシリアル化クラスの作成に関する花崗岩のドキュメントを確認してください。 ただし、これにはFlex側でもデシリアライザー/シリアライザーを作成する必要があり、パフォーマンスに関してはおそらく適切な選択ではないことに注意してください。Byte

乾杯

于 2011-10-06T08:54:06.823 に答える