@Query("SELECT *from Face WHERE id= :PicId")
FaceEntity getPicId(int PicId);
//这里的FaceEntity 应该可以写成别的类型,不过我返回Blob的时候报错
拿到blo后打印不出来 出现 [B@6fde07a 查了才发现不能直接打印。Java 中 byte 数组的默认打印方式,它并不直接显示数组内容或者字节数据的具体内容。
为什么会出现这样的情况。
在 Java 中,当你打印一个对象时,如果该对象没有重写 toString()
方法,Java 会使用默认的 Object
类的 toString()
方法来生成字符串表示。对于 byte 数组 [B@6fde07a
,这里的 [B
表示一个 byte 数组,@6fde07a
是该对象的哈希码的十六进制表示。
因此,当你尝试打印 blo.getFacePic()
返回的结果时,如果 blo.getFacePic()
是一个 byte 数组,你会看到类似 [B@6fde07a
的输出,而不是 byte 数组的内容。
可以手动遍历 byte 数组并打印每个元素的值。将字节数组中的每个字节转换为十六进制。
FaceDao userDao = faceRoomDatabase.userDao();
FaceEntity blo = userDao.getPicId(1);
byte[] picData = blo.getFacePic();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < picData.length; i++) {
String hex = String.format("%02X", picData[i]);
sb.append(hex);
}
System.out.println("Blob Pic = [" + sb.toString() + "]");
}
log一下
完美!!!