2016-05-07 9 views
0

Ich habe eine vorhandene Datei in der Datenbank und jetzt muss ich ersetzen, dass aus der Datenbank mit einer neuen Datei. Was wäre die HQL-Abfrage, um die bestehende Datei zu entfernen und die neue hinzuzufügen?HQL-Abfrage zum Ersetzen einer vorhandenen Datei aus der Datenbank mit Hibernate

+0

Nur um zu klären - die Datei Teil eines Unternehmens (oder ist ein Unternehmen selbst), die von Hibernate verwaltet wird? –

+0

Ich habe die Datei von der JSF-Seite mit dem Tag genommen. Meine managedBean-Klasse speicherte sie als "Teil" -Datei, die in einen Byte-Stream konvertiert und dann in der Datenbank gespeichert wurde. Jetzt möchte ich die bereits hochgeladene Datei durch eine neue ersetzen. –

Antwort

0
public void addReplacementFile(UploadReplacementFileBean uploadReplacementFileBean) throws Exception { 

    SessionFactory sessionFactory = HibernateUtility.createSessionFactory(); 
    Session session = null; 
    session = sessionFactory.openSession(); 
    session.beginTransaction(); 


    InputStream input = uploadReplacementFileBean.getFileData().getInputStream(); 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    byte[] buffer = new byte[10240]; 
    for (int length = 0; (length = input.read(buffer)) > 0;) 
     output.write(buffer, 0, length); 


    try { 

     output.flush(); 
     String qs="update UploadFileEntity set fileData=? where fileId=?"; 

     Query query=session.createQuery(qs); 
     query.setParameter(0, output.toByteArray()); 
     query.setParameter(1, uploadReplacementFileBean.getFileId()); 

     query.executeUpdate(); 
     session.getTransaction().commit(); 
     session.close(); 

    }catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 


    } 
+0

Anstatt zu versuchen, die Datenbank mit HQL zu aktualisieren, rufen Sie die persistente UploadFileEntity ab und aktualisieren Sie sie mit den neu hochgeladenen Daten. –

+1

In diesem Fall muss ich das Objekt wieder mit den richtigen Werten füllen? –