Ik heb het volgende probleem.
Voor een applicatie waarmee ik reservering moet beheren is het nodig dat ik de contracten en offertes voor bepaalde reserveringen als Word document opsla in de database.
Waarom zo omslachtig, zul je je afvragen. Mijn opdrachtgever is een docent, het gaat hem dus gewoon om het principe dat ik bestanden in een database leer zetten en niet of ik in dit geval de makkelijkste weg kies.
Ik loop hierbij alleen tegen het volgende probleem: de reservering wordt in zijn geheel opgeslagen, echter het veld waarin de blob hoort te staan blijft leeg en in de binary modus is er ook in geen velden of wegen ook maar 1 enkele byte te vinden.
We werken dus met Java in combinatie met Hibernate en MySQL. Daarbij ga ik als volgt te werk:
Eerst laad ik het bestand in de applicatie en maak er een BLOB van:
ik heb hier de catches even weggelaten want die zijn toch neit van belang. Het komt er dus uiteindelijk op neer dat ik de output krijg:
vervolgens ga ik deze BLOB in een reservation-pojo zetten
variabele o is hierin een verwijzing naar t scherm waarin ik de BLOB laad. Variabele res is een verwijzing naar de pojo die de reservering in de database moet zetten. De getter en setter zeggen hoop ik genoeg
nog even een blik binnen de pojo
en de reservation.hbm.xml
iemand hier verstand van?
Bij voorbaat dank
Voor een applicatie waarmee ik reservering moet beheren is het nodig dat ik de contracten en offertes voor bepaalde reserveringen als Word document opsla in de database.
Waarom zo omslachtig, zul je je afvragen. Mijn opdrachtgever is een docent, het gaat hem dus gewoon om het principe dat ik bestanden in een database leer zetten en niet of ik in dit geval de makkelijkste weg kies.
Ik loop hierbij alleen tegen het volgende probleem: de reservering wordt in zijn geheel opgeslagen, echter het veld waarin de blob hoort te staan blijft leeg en in de binary modus is er ook in geen velden of wegen ook maar 1 enkele byte te vinden.
We werken dus met Java in combinatie met Hibernate en MySQL. Daarbij ga ik als volgt te werk:
Eerst laad ik het bestand in de applicatie en maak er een BLOB van:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| JFileChooser file = new JFileChooser();
int returnVal = file.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
file.getSelectedFile().getName());
}
File loadedFile = file.getSelectedFile();
try {
InputStream is = new FileInputStream(loadedFile);
try {
offer = Hibernate.createBlob(is);
try {
System.out.println("Bloblength"+ offer.length()); |
ik heb hier de catches even weggelaten want die zijn toch neit van belang. Het komt er dus uiteindelijk op neer dat ik de output krijg:
code:
1
2
| You chose to open this file: Advanced SQL.doc Bloblength30208 |
vervolgens ga ik deze BLOB in een reservation-pojo zetten
code:
1
2
| Blob b = o.getOffer();
res.setOffer(b); |
variabele o is hierin een verwijzing naar t scherm waarin ik de BLOB laad. Variabele res is een verwijzing naar de pojo die de reservering in de database moet zetten. De getter en setter zeggen hoop ik genoeg
nog even een blik binnen de pojo
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class Reservation {
private Blob offer;
public Reservation() {
}
public Blob getOffer() {
return offer;
}
public void setOffer(Blob offer) {
this.offer = offer;
} |
en de reservation.hbm.xml
code:
1
| <property name="offer" column="res_offer" type="blob"/> |
iemand hier verstand van?
Bij voorbaat dank