@SqlUpdate("update samples set file = :file where flag = true")
int updateFile(@Bind("file") InputStream file);
@SqlUpdate("update samples set file = :file where flag = true")
fun updateFile(@Bind("file") file: InputStream?): Int
Mit JDBI3 ist das nicht möglich ...
org.jdbi.v3.core.statement.UnableToCreateStatementException: No argument factory registered for type ...
Ich bekomme einen Fehler wie
Wenn ich auf GitHub nach einer Fehlermeldung gesucht habe, ist ↓ verdächtig
return new UnableToCreateStatementException("No argument factory registered for '" + value + "' of qualified type " + qualifiedType, ctx);
https://github.com/jdbi/jdbi/blob/3c93a316d5cbf9507e668b62414daae759641e93/core/src/main/java/org/jdbi/v3/core/statement/ArgumentBinder.java#L174
Anscheinend muss das zu bindende Objekt die Argument-Schnittstelle implementieren.
(Fügen Sie Details hinzu, wenn Sie Lust dazu haben)
Die Lösung besteht darin, InputStreamArgument zu verwenden
@SqlUpdate("update samples set file = :file where flag = true")
int updateFile(@Bind("file") InputStreamArgument file);
@SqlUpdate("update samples set file = :file where flag = true")
fun updateFile(@Bind("file") file: InputStreamArgument?): Int
http://jdbi.org/apidocs/org/jdbi/v3/core/argument/InputStreamArgument.html
InputStream als erstes Argument Das zweite Argument ist die Größe des Streams Übergeben Sie im dritten Argument, ob es sich um ASCII handelt oder nicht
public InputStreamArgument(InputStream stream,
int length,
boolean ascii)
Parameters:
stream - the stream to bind
length - the length of the stream
ascii - true if the stream is ASCII
Recommended Posts