
fi.evolver.basics.spring.common.SequenceRepository Maven / Gradle / Ivy
package fi.evolver.basics.spring.common;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import fi.evolver.basics.spring.common.entity.Sequence;
@Repository
public interface SequenceRepository extends JpaRepository {
Optional findByName(String name);
@Transactional(propagation = Propagation.MANDATORY)
public default Sequence getSequence(String name) {
Sequence sequence = findByName(name).orElse(null);
if (sequence == null) {
sequence = new Sequence(name, 1);
saveAndFlush(sequence);
}
return sequence;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public default long getNextValue(String name) {
return getSequence(name).getAndIncrement();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy