J'ai un objet SibImage qui contient l'adresse de mon image.
Mon datamodel contient un attribut : SibImage image;
Je crée donc un type hibernate pour pouvoir transfomé mon adresse
d'image en BLOB (oracle).
Voci ma classe SibImageBlobType (seule la méthoe Set nous intéresse) :
Code:
public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {
if (value == null) {
// pas d'image
st.setNull(index, Types.BLOB);
return;
}
InputStream inStream = null;
try {
// création d'une connexion vers l'image
URLConnection urlCnx = ((SibImage)
value).getImageUrl().openConnection();
//récupération du flux
inStream = urlCnx.getInputStream();
// lecture du flux et écriture dans un tableau de bytes
ByteArrayOutputStream byteArrayStream = new
ByteArrayOutputStream(1024);
for (int val; (val = inStream.read()) != -1;) {
byteArrayStream.write(val);
}
st.setBlob(index, BLOB.empty_lob());
}
ca c'est ce qui marche, normal je ne fais rien, mais bon l'insertion
d'un blob vide fonctionne correctement.
Donc si je rajoute ceci :
Code:
public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {
if (value == null) {
// pas d'image
st.setNull(index, Types.BLOB);
return;
}
InputStream inStream = null;
try {
// création d'une connexion vers l'image
URLConnection urlCnx = ((SibImage)
value).getImageUrl().openConnection();
//récupération du flux
inStream = urlCnx.getInputStream();
// lecture du flux et écriture dans un tableau de bytes
ByteArrayOutputStream byteArrayStream = new
ByteArrayOutputStream(1024);
for (int val; (val = inStream.read()) != -1;) {
byteArrayStream.write(val);
}
Connection conn =
st.getConnection().getMetaData().getConnection();
Quelle version du pilote oracle ? http://download-east.oracle.com/otn_hosted_doc/jdeveloper/904preview/jdbc-javadoc/oracle/sql/BLOB.html#createTemporary(java.sql.Connection,%20boolean,%2 0int)
Quelle version du pilote oracle ?
http://download-east.oracle.com/otn_hosted_doc/jdeveloper/904preview/jdbc-javadoc/oracle/sql/BLOB.html#createTemporary(java.sql.Connection,%20boolean,%2
0int)
Quelle version du pilote oracle ? http://download-east.oracle.com/otn_hosted_doc/jdeveloper/904preview/jdbc-javadoc/oracle/sql/BLOB.html#createTemporary(java.sql.Connection,%20boolean,%2 0int)