0

上下文 - GraniteDS + JPA DataNucleus + MySQL

该场景是在数据库中存储/检索图像。

问题在于从数据库中检索。书籍封面是从数据库中获取的,但在 flex 前端显示为空。

从 java "Byte[]" 到 flex "ByteArray" 的翻译返回 null。

下面是2个类文件。

AcrionScript 类

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

Java 类

@Entity 公共类 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。

尝试将 a 更改Byte[]byte[],看看是否适合您。

如果您确实需要使用 Byte[],请查看有关编写自定义序列化类以能够传输Byte对象的花岗岩文档。
但请记住,这也需要您在 Flex 端编写反序列化器/序列化器,并且在性能方面可能不是一个好的选择。

干杯

于 2011-10-06T08:54:06.823 回答