Caused by: org.postgresql.util.PSQLException: ERROR: large object 97664 does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
at org.postgresql.core.v3.QueryExecutorImpl.receiveFastpathResult(QueryExecutorImpl.java:672)
at org.postgresql.core.v3.QueryExecutorImpl.fastpathCall(QueryExecutorImpl.java:501)
at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:109)
at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:156)
at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:168)
at org.postgresql.largeobject.LargeObject.<init>(LargeObject.java:106)
at org.postgresql.largeobject.LargeObject.<init>(LargeObject.java:123)
at org.postgresql.largeobject.LargeObject.copy(LargeObject.java:128)
at org.postgresql.jdbc4.AbstractJdbc4Blob.getBinaryStream(AbstractJdbc4Blob.java:26)
at org.everit.blobstore.jdbc.internal.StreamBlobChannel.read(StreamBlobChannel.java:97)
at org.everit.blobstore.jdbc.internal.JdbcBlobReader.read(JdbcBlobReader.java:128)
For me that means that it is impossible to be sure that between getting a record from my table and getting the actual content of the blob, the content will be still the same as when I selected the blob record.
I guess I can use safely the table only if I select the record with FOR SHARE.