From 04f9a9d2dbd2d79bfffea9c5a6b7ba1b32c5f42b Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 17 Nov 2014 15:29:03 +0000
Subject: [PATCH] #396 fix - Supporting MySQL, changed "persist()" by "merge()"

---
 securis/src/main/java/net/curisit/securis/services/PackResource.java |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index cd18426..8a29756 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -225,23 +225,28 @@
         currentPack.setComments(pack.getComments());
         currentPack.setNumLicenses(pack.getNumLicenses());
 
-        em.persist(currentPack);
-
         Set<PackMetadata> newMD = pack.getMetadata();
         for (PackMetadata currentMd : currentPack.getMetadata()) {
-            if (newMD == null || !newMD.contains(currentMd))
-                ;
-            em.remove(currentMd);
+            if (newMD == null || !newMD.contains(currentMd)) {
+                em.remove(currentMd);
+            }
         }
 
         if (newMD != null) {
+            Set<PackMetadata> oldMD = currentPack.getMetadata();
             for (PackMetadata md : newMD) {
-                md.setPack(currentPack);
-                em.persist(md);
+                if (oldMD.contains(md)) {
+                    em.merge(md);
+                } else {
+                    md.setPack(currentPack);
+                    em.persist(md);
+                }
             }
         }
         currentPack.setMetadata(newMD);
-        return Response.ok(pack).build();
+        em.merge(currentPack);
+
+        return Response.ok(currentPack).build();
     }
 
     @POST

--
Gitblit v1.3.2