diff --git a/database.go b/database.go
index 0bde58478fb4231e9878dd707743fff802d227bb..00fb684e774fdd09bbd71bd6e2b11d42ece87d5e 100644
--- a/database.go
+++ b/database.go
@@ -1,6 +1,7 @@
 package jobqueue
 
 import (
+	"errors"
 	"gorm.io/gorm"
 	"sync"
 )
@@ -100,14 +101,23 @@ func (s *DBSaver) Start() error {
 					memLogs := permJob.Logs
 					permJob.Logs = nil
 
-					result := tx.FirstOrCreate(&permJob, map[string]interface{}{"id": permJob.GetID()}).
-						Assign(permJob)
-
-					err := result.Error
-
-					// Find or create JobMeta
-					if err != nil {
-						s.logError("Error while saving job", "error", err)
+					var existingJob GenericJob
+					result := tx.Where("id = ?", permJob.GetID()).First(&existingJob)
+
+					if result.Error != nil {
+						if errors.Is(result.Error, gorm.ErrRecordNotFound) {
+							err := tx.Create(&permJob).Error
+							if err != nil {
+								return err
+							}
+						} else {
+							return result.Error
+						}
+					} else {
+						err := tx.Model(&existingJob).Updates(permJob).Error
+						if err != nil {
+							return err
+						}
 					}
 
 					if result.RowsAffected == 0 {
diff --git a/persistence.go b/persistence.go
index f5bb440668f7a77747dda1c0f3a5c07a0934699c..67b84a4b1cb9dfcc3307d01037b24e63e8c61219 100644
--- a/persistence.go
+++ b/persistence.go
@@ -265,8 +265,8 @@ func CreateJobAndSchedulerFromPersistence(jobImport JobPersistence, manager *Man
 		}
 
 	case "delay":
-		scheduler = &DelayScheduler{Delay: jobImport.Scheduler.Delay}
 
+		scheduler = &DelayScheduler{Delay: jobImport.Scheduler.Delay}
 	case "event":
 		scheduler = &EventScheduler{Event: EventName(jobImport.Scheduler.Event)}