All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.basics.spring.common.SequenceRepository Maven / Gradle / Ivy

There is a newer version: 6.7.0
Show newest version
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