Akzeptiert JDBI UUID-Parameter?

8

Wenn JDBI bei der Verwendung der SQL Object-Argumentbindung direkt mit den UUID-Parametern arbeitet,

?

Ich habe eine Methode wie folgt:

%Vor%

, das an eine gespeicherte SQL Server-Prozedur gebunden ist, die einen Parameter wie folgt empfängt:

%Vor%

Bei der Ausführung wird diese Ausnahme ausgelöst:

%Vor%

Wenn ich den Parametertyp in JDBI in String ändere und ihn mit der Methode toString () vom UUID-Objekt aus aufrufe, funktioniert es:

%Vor%

Gibt es eine Möglichkeit, meine DAO-Methoden zu schreiben, die UUID-Parameter akzeptieren und sie vor dem Binden in Strings konvertieren lassen?

    
Fernando Correia 18.08.2012, 21:39
quelle

1 Antwort

15

JDBI macht nur explizite typbasierte Bindungen für die Typen verfügbar, für die JDBC sie verfügbar macht. JDBC stellt keinen UUID-Typ für die Bindung zur Verfügung, so dass er standardmäßig als Objekt festgelegt wird. Leider bietet JDBC keinen expliziten UUID-Bindemechanismus, daher ist das Durchlaufen von String wahrscheinlich der portabelste Weg: - (

Wenn Sie es als UUID in Java binden und es intern in einen String konvertieren möchten, gibt es zwei Pfade. Wenn Sie immer UUIDs als Strings binden möchten, verwenden Sie eine ArgumentFactory, siehe Ссылка für ein Beispiel.

Wenn Sie dies nur in bestimmten Fällen tun möchten, erstellen Sie eine benutzerdefinierte Sammelmappe, z. B. mit Ссылка

Beispiel für die Implementierung einer globalen Bindung von UUIDs an Strings mit einer ArgumentFactory:

UUIDArgumentFactory.java:

%Vor%

UUIDArgument.java:

%Vor%

Registrieren:

%Vor%     
brianm 20.08.2012, 02:29
quelle

Tags und Links