2016-07-02 12 views
0

zu speichern habe ich diese Klasse EntityWie Blob-Dateien in der Datenbank

@Entity 
public class ScannedFile { 

    @Column(nullable = true) 
    private Blob content; 

    @Column(nullable = true) 
    private byte[] photo; 
} 

Und ich versuchte, die Bilddatei in der Datenbank zu speichern. Ich habe zwei Lösungen gefunden und beides versucht. Aber keiner von ihnen arbeitet für mich. Hier ist, was habe ich versucht,

1. Verwendung von Byte-Array

private Part file1; 

public String upload() throws IOException{ 
    InputStream inputStream = file1.getInputStream(); 
    ScannedFile created = new ScannedFile(); 
    created.setId(this.scannedFile.getId()); 
    byte[] photo = IOUtils.toByteArray(inputStream); 
    created.setPhoto(photo); 
    ScannedFile newScannedFile = this.scannedFileRepository.save(created);   
} 

Problem: Foto hochgeladen wird nicht in der Datenbank gespeichert werden. Aber es gibt auch keinen Fehler. Was vermisse ich hier.

2. Mit Blob

private static void initSession() { 
    Configuration configuration = new Configuration().configure(); 
    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); 
    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
    session = sessionFactory.openSession(); 
    session.beginTransaction(); 
} 

private static void endSession() { 
    session.getTransaction().commit(); 
    session.close(); 
    StandardServiceRegistryBuilder.destroy(serviceRegistry); 
} 

private Part file1; 

public String upload() throws IOException{ 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 
    InputStream inputStream = file1.getInputStream(); 
    Blob blob = Hibernate.getLobCreator(session).createBlob(inputStream, 200); 
    ScannedFile created = new ScannedFile(); 
    created.setContent(blob); 
    ScannedFile newScannedFile = this.scannedFileRepository.save(created); 
    endSession(); 
} 

Problem: ich diesen Fehler hibernate.cfg.xml not found. Aber ich möchte diese XML-Datei nicht wirklich verwenden. Wie kann ich diesen Fehler beheben und das hochgeladene Bild in der Datenbank speichern?

Hinweis: Ich lerne Frühling und JSF seit ein paar Tagen. Ich benutze sowohl jsf als auch Frühling in der gleichen Anwendung. Ich benutze auch h2 Datenbank.

+0

Könnten Sie bitte beschreiben die Tabelle, die Sie hier verwenden? –

+0

ScannedFile ist die Tabelle. Ich habe es von h2 Konsole –

Antwort

0

Ich habe dein Problem. Verwenden Sie @Lob in Ihrem @Entity für private byte[] photo;

+0

Ich habe es bereits versucht, aber immer noch nichts in der Datenbank gespeichert ist –

Verwandte Themen