Jpa TypedQuery和byte []

时间:2017-10-12 14:40:04

标签: java arrays image jpa serialization

我有一个类似的类型:

TypedQuery<Object[]> query = em.createQuery("SELECT c.id , c.name, g.id, g.brand, g.price,g.goodsImage FROM Category c JOIN c.goods g WHERE g.user.userId=:userId and g.class=:type",Object[].class);
            query.setParameter("userId", userId);
            query.setParameter("type", type.toUpperCase());

其中g.goodsImage是一个字节数组。 我不知道的是,如何将对象[5]转换为字节[]?

我试图序列化对象,但我没有运气。

这就是我的尝试:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
                 ObjectOutput out;
                try {
                    out = new ObjectOutputStream(bos);
                     out.writeObject(object[5]);
                     byte[] image = new byte[ bos.size()];
                     image  = bos.toByteArray();

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

如果我这样做:

  TypedQuery<byte[]> query = em.createQuery("SELECT g.goodsImage From Goods g ",byte[].class);

这样可行,但第一个Typed Query不会。

你知道如何将object []转换为byte []吗?

1 个答案:

答案 0 :(得分:0)

正如DN1告诉我的那样,投射对象将起作用:

goods.goodsImage = (byte[]) object[5];