Die jOOQ-Transaktion funktioniert nicht wie erwartetJava

Java-Forum
Guest
 Die jOOQ-Transaktion funktioniert nicht wie erwartet

Post by Guest »

Ich habe eine Back-End-API, die eine einfache „getOrCreate“-Operation für die Datenbank ausführt.
Aus irgendeinem Grund kann diese API zweimal gleichzeitig aufgerufen werden, daher habe ich das getan hat eine Änderung vorgenommen, um den Datensatz nicht zweimal zu erstellen (durch Hinzufügen einer Transaktion). Allerdings werden jedes Mal, wenn der Code ausgeführt wird, zwei Datensätze erstellt.
Zwei API-Aufrufe nutzen dieselbe DSLContext-Instanz, aber jeder Aufruf wird in einem separaten Thread ausgeführt.
Beispielcode:

Code: Select all

public static Record getOrCreateData(int id, DSLContext dslContext) {

var result = dslContext.transactionResult(config -> {
var dsl = DSL.using(config);
var existingData = dsl
.selectFrom(TABLE1)
.where(TABLE1.LINK_ID.eq(id))
.fetchOptionalInto(RecordDto.class);

if ( existingData.isPresent() ) {
return existingData.get();
}

var record = dsl.newRecord(TABLE1);
...
record.store();

return record.into(RecordDto.class);
});

return result;
}
Ich verwende Hikari CP mit Postgresql-Datenbank mit Standardkonfiguration.
Wie kann ich das beheben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post