Avoid uniqueness constraint errors via upsert Do this in JPA instead of hacking around in the application.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/7255d73c Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/7255d73c Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/7255d73c Branch: refs/heads/master Commit: 7255d73ced667002d59985df8a371509989c958c Parents: 5bd8447 Author: Andrew Gaul <[email protected]> Authored: Mon Feb 22 11:30:35 2016 -0800 Committer: Andrew Gaul <[email protected]> Committed: Tue Feb 23 23:47:38 2016 -0800 ---------------------------------------------------------------------- jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/7255d73c/jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java ---------------------------------------------------------------------- diff --git a/jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java b/jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java index 9cd185c..af75721 100644 --- a/jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java +++ b/jdbc/src/main/java/org/jclouds/jdbc/service/JdbcService.java @@ -109,7 +109,6 @@ public class JdbcService { BlobEntity oldBlobEntity = findBlobById(containerName, key); if (oldBlobEntity != null) { creationDate = oldBlobEntity.getCreationDate(); - deleteBlob(containerName, key); } BlobEntity blobEntity = blobToBlobEntity.apply(blob); blobEntity.getPayload().setChunks(storeData(blob.getPayload().openStream())); @@ -117,12 +116,13 @@ public class JdbcService { blobEntity.setKey(key); blobEntity.setBlobAccess(blobAccess); blobEntity.setCreationDate(creationDate); + blobEntity.setLastModified(new Date()); HashCode hash = ByteStreams2.hashAndClose(blob.getPayload().openStream(), Hashing.md5()); blobEntity.setEtag(base16().lowerCase().encode(hash.asBytes())); blobEntity.getPayload().setContentMD5(hash.asBytes()); - BlobEntity result = blobRepository.create(blobEntity); + BlobEntity result = blobRepository.save(blobEntity); checkIntegrity(blob, result); return result; } @@ -138,7 +138,7 @@ public class JdbcService { blobEntity.setKey(blob.getMetadata().getName()); blobEntity.setBlobAccess(blobAccess); blobEntity.setEtag(DIRECTORY_MD5); - return blobRepository.create(blobEntity); + return blobRepository.save(blobEntity); } @Transactional
