das folgende Szenario Gegeben: Ich habe eine App mit Frühlings-Boot-@SpringBootApplication
und Setup mit Spring Data JPA-Datenquelle in application.properties
ausgeführt wird:Spring Data JPA Transaktion individuelle Isolationsstufe
spring.datasource.url=jdbc:mysql://foo.bar.com:12345
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
und keine zusätzlichen java/xml configs.
Ich habe ein paar von Dienstleistungen an:
@Service
public class ProjectServiceImpl implements ProjectService {
@Autowired
ProjectRepository projectRepository;
@Override
@Transactional(isolation = Isolation.SERIALIZABLE)
public Project save(Project project) {
// there might be some additional logic here, besides the action on repository
return projectRepository.save(project);
}
}
und Repositories:
@Repository
public interface ProjectRepository extends CrudRepository<Project, Long> {}
Wie oben im Code ist, fand ich mich in der Notwendigkeit, sagen wir mal, SERIALIZABLE
Niveau der Isolation durch dass die App horizontal skaliert wird und gelegentlich widersprüchliche Daten in der Datenbank gespeichert werden (einfach @Transactional
war nicht genug). Nun, wenn sie versuchen, versuche ich projectService.save(project)
Aktion auszuführen ich eine Ausnahme erhalten:
"exception": "org.springframework.transaction.InvalidIsolationLevelException",
"message": "JtaTransactionManager does not support custom isolation levels by default - switch 'allowCustomIsolationLevels' to 'true'",
Ist es möglich, diese individuelle Isolationsstufen mit einem Java-Config zu aktivieren?
Meine Frage Einstellung wurde mehr auf die Tatsache, dass ich beziehe weiß nicht, wie 'tramsactionManager' zugreifen zu können, diesen Wert setzen. Kann es irgendwie mit '@ EnableTransactionManagement' gemacht werden? – Jakubs
Sie werden einen transactionManager in applicationcontext.xml oder einer anderen XML-Datei definieren. Bitte setzen Sie in der Bean-Definition von transactionManager. –
shankarsh15
Der Fall ist, ich verwende keine xml-basierte Federkonfiguration. Ist es möglich mit java config zu arbeiten? – Jakubs