amo*_*fis 3 database hibernate jpa blob
我正在尝试使用hibernate @Entity和java.sql.Blob来存储一些二进制数据.存储不会抛出任何异常(但是,我不确定它是否真的存储了字节),但是读取确实存在.这是我的测试:
@Test
public void shouldStoreBlob() {
InputStream readFile = getClass().getResourceAsStream("myfile");
Blob blob = dao.createBlob(readFile, readFile.available());
Ent ent = new Ent();
ent.setBlob(blob);
em.persist(ent);
long id = ent.getId();
Ent fromDb = em.find(Ent.class, id);
//Exception is thrown from getBinaryStream()
byte[] fromDbBytes = IOUtils.toByteArray(fromDb.getBlob().getBinaryStream());
}
Run Code Online (Sandbox Code Playgroud)
所以它引发了一个例外:
java.sql.SQLException: could not reset reader
at org.hibernate.engine.jdbc.BlobProxy.getStream(BlobProxy.java:86)
at org.hibernate.engine.jdbc.BlobProxy.invoke(BlobProxy.java:108)
at $Proxy81.getBinaryStream(Unknown Source)
...
Run Code Online (Sandbox Code Playgroud)
为什么?它不应该在这里读取DB的字节吗?我能做些什么让它发挥作用?