/**
  * Get the associated BatchJob object
  *
  * @param      PropelPDO Optional Connection object.
  * @return     BatchJob The associated BatchJob object.
  * @throws     PropelException
  */
 public function getBatchJob(PropelPDO $con = null)
 {
     if ($this->aBatchJob === null && $this->batch_job_id !== null) {
         $this->aBatchJob = BatchJobPeer::retrieveByPk($this->batch_job_id);
         /* The following can be used additionally to
         		   guarantee the related object contains a reference
         		   to this object.  This level of coupling may, however, be
         		   undesirable since it could result in an only partially populated collection
         		   in the referenced object.
         		   $this->aBatchJob->addBatchJobLockSuspends($this);
         		 */
     }
     return $this->aBatchJob;
 }
 /**
  * @param int $id
  * @param kExclusiveLockKey $lockKey
  * @param BatchJob $object
  * @return BatchJob
  */
 public static function updateExclusive($id, kExclusiveLockKey $lockKey, BatchJob $object)
 {
     $c = new Criteria();
     $c->add(BatchJobLockPeer::ID, $id);
     $c->add(BatchJobLockPeer::SCHEDULER_ID, $lockKey->getSchedulerId());
     $c->add(BatchJobLockPeer::WORKER_ID, $lockKey->getWorkerId());
     $c->add(BatchJobLockPeer::BATCH_INDEX, $lockKey->getBatchIndex());
     $db_lock_object = BatchJobLockPeer::doSelectOne($c);
     if (!$db_lock_object) {
         throw new APIException(APIErrors::UPDATE_EXCLUSIVE_JOB_FAILED, $id, $lockKey->getSchedulerId(), $lockKey->getWorkerId(), $lockKey->getBatchIndex(), print_r($db_lock_object, true));
     }
     if ($db_lock_object) {
         $db_object = $db_lock_object->getBatchJob();
     } else {
         $db_object = BatchJobPeer::retrieveByPk($id);
     }
     baseObjectUtils::fillObjectFromObject(BatchJobPeer::getFieldNames(), $object, $db_object, baseObjectUtils::CLONE_POLICY_PREFER_NEW, null, BasePeer::TYPE_PHPNAME);
     $db_object->save();
     return $db_object;
 }