@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
Ce n'est pas possible avec JDBI3 ...
org.jdbi.v3.core.statement.UnableToCreateStatementException: No argument factory registered for type ...
J'obtiens une erreur comme
Lorsque j'ai recherché un message d'erreur sur GitHub, ↓ est suspect
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
Apparemment, l'objet à lier doit implémenter l'interface Argument.
(Ajoutez des détails si vous en avez envie)
La solution est d'utiliser InputStreamArgument
@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 comme premier argument Le deuxième argument est la taille du Stream Indiquez si c'est ASCII ou non dans le troisième argument
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