Voila j'ai une classe Gestion, avec dedans deux ArrayList qui contiennent des objets, j'aimerais faire persister ces arraylist à travers une base de données MySql

Donc j'ai ma classe Gestion :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package Gestion;
 
import java.util.*;
 
 
import java.io.Serializable;
public class Gestion implements Serializable{
 
	//Les Réservations
 
	private ArrayList lesReservations= new ArrayList();
 
	public void addReservation(String code, GregorianCalendar dateDemande, int dureeOccupation,
			GregorianCalendar dateDebut, Personne unePersonne, int nbPersonnes, Emplacement unEmplacement){
		Reservation r = new Reservation (code, dateDemande, dureeOccupation, dateDebut, unePersonne, nbPersonnes, unEmplacement );
		lesReservations.add(r);
	}
	public ArrayList getLesReservations() {
		return this.lesReservations;
	}
	public Reservation getReservation(String numero){
		Reservation res = null;
		for (int i = 0; i<lesReservations.size();i++){
			if ( ((Reservation)lesReservations.get(i)).getCode().equals(numero)){
		res = ((Reservation)lesReservations.get(i));}}
		return res;
	}
 
	public ArrayList retrouveReserveClient(String codeClient){
		ArrayList sesReservations = new ArrayList();
		for (int i = 0; i<lesReservations.size();i++)
		{
		if (((Reservation)lesReservations.get(i)).getUnePersonne().getCodeClient().equals(codeClient))
		{
		sesReservations.add(lesReservations.get(i));
		}}	
	return sesReservations;	
	}
 
	public int nombreReservations(){
		return lesReservations.size();
	}
 
	public float surfaceTotale(){
		float resultat = 0;
		for (int i = 0; i < lesEmplacements.size(); i++){
			resultat = resultat + ((Emplacement)lesEmplacements.get(i)).getSurface();
		}
		return resultat;
	}
 
	//Les Emplacements
 
	private ArrayList lesEmplacements = new ArrayList();
 
	public ArrayList getLesEmplacements(){
		return this.lesEmplacements;}
 
	public Emplacement getEmplacement(String numero){
		Emplacement emp = null;
		for (int i = 0; i<lesEmplacements.size();i++){
			if ( ((Emplacement)lesEmplacements.get(i)).getNumero().equals(numero)){
		emp = ((Emplacement)lesEmplacements.get(i));}}
		return emp;
	}
	public void addRempli(String numero, boolean ombrage, int longueur, int largeur, int taxePersonne,String libelle, int nbChambres, int nbPieces, int presenceWc, boolean terrasse){
		Rempli r = new Rempli (numero, ombrage, longueur, largeur, taxePersonne, libelle, nbChambres, nbPieces, presenceWc, terrasse);
		lesEmplacements.add(r);}
	public void addVide(String numero, boolean ombrage, int longueur, int largeur, int taxePersonne, boolean electricite){
		Vide v = new Vide (numero, ombrage, longueur, largeur, taxePersonne, electricite);
		lesEmplacements.add(v);}
 
 
	public ArrayList retrouveReserveEmp(String codeEmp){
		ArrayList sesReservations = new ArrayList();
		for (int i = 0; i<lesReservations.size();i++)
		{
		if (((Reservation)lesReservations.get(i)).getUnEmplacement().getNumero().equals(codeEmp))
		{
		sesReservations.add(lesReservations.get(i));	
		}	
		}	
	return sesReservations;	
	}
 
	//Calculer les dates
 
 
	//Ressortir les dates disponibles pour un emplacement donné
 
 
 
 
	//
	public boolean emplacementsDispo(GregorianCalendar dateDepart){
        boolean b;
        b = true;
 
 
        for (int i = 0; i < lesReservations.size();i++){
        if( ((Reservation)lesReservations.get(i)).getDateDebut().before(dateDepart) && ((Reservation)lesReservations.get(i)).calculeDateFin().after(dateDepart)){
            b = false;
        }}
        return b;
    }
 
 
}
Et la classe qui permet de sérialiser et d'envoyer vers la bdd :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package	Gestion;
/**SQL to create MySQL Table For Object Storing**/
 
/*CREATE TABLE javaobjects (
 objectid INT AUTO_INCREMENT,
 object_name varchar(100),
 object_value BLOB,
 primary key (objectid));
 */
 
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
public class SerializeJavaObjects_MySQL {
	static final String SQL_TO_WRITE_OBJECT = "INSERT INTO JAVAOBJECTS(OBJECT_NAME, OBJECT_VALUE) VALUES (?, ?)";
	static final String SQL_TO_READ_OBJECT = "SELECT OBJECT_VALUE FROM JAVAOBJECTS WHERE OBJECTID = ?";
 
	static String driver = "com.mysql.jdbc.Driver";
	static String url = "jdbc:mysql://localhost/Ecamping";
	static String username = "client";
	static String password = "client";
 
	/**
         * This class will create and return a database connection.
         */
	public static Connection getConnection() throws Exception {
		Class.forName(driver);
		Connection conn = DriverManager.getConnection(url, username, password);
		return conn;
	}
 
	/**
         * This method will write a java object
         * to the database
         * Parameters: connection object and object to be serialized
         */
	public static long writeJavaObject(Connection conn, Object object)
			throws Exception {
		String className = object.getClass().getName();
		PreparedStatement pstmt = conn.prepareStatement(SQL_TO_WRITE_OBJECT);
		pstmt.setString(1, className);
		pstmt.setObject(2, object);
		pstmt.executeUpdate();
		ResultSet rs = pstmt.getGeneratedKeys();
		int id = -1;
		if (rs.next()) {
			id = rs.getInt(1);
		}
		rs.close();
		pstmt.close();
		System.out.println("Serialization Successful."+
						   "Serialized Class: "+ className);
		return id;
	}
 
	/**
         * This class will de-serialize a java object from the database
         */
	public static Object readJavaObject(Connection conn, long id)
			throws Exception {
		PreparedStatement pstmt = conn.prepareStatement(SQL_TO_READ_OBJECT);
		pstmt.setLong(1, id);
		ResultSet rs = pstmt.executeQuery();
		rs.next();
		byte[] buf = rs.getBytes("object_value");
		ObjectInputStream objectIn = null;
		if (buf != null)
			objectIn = new ObjectInputStream(new ByteArrayInputStream(buf));
		Object object = objectIn.readObject();
		String className = object.getClass().getName();
		rs.close();
		pstmt.close();
		System.out.println("Deserialization Successful."+
							"\nDeserialized Class: "+ className);
		return object;
	}
 
	/**
         * Testing the serialization and deserialization feature.
         */
 
	public static void main(String args[]) throws Exception {
		Connection conn = null;
		try {
			/**Creating DB Connection**/
			conn = getConnection();
			conn.setAutoCommit(false);
			/**Creating Test object to Serialize**/
			Gestion obj = new Gestion();
			/**
                         * Serializing the object and getting the database id,
                         * which is nothing but an autogenerated key
                         */
			long objectID = writeJavaObject(conn, obj);
			conn.commit();
			System.out.println("Serialized object ID" + objectID);
			/**
                         * Reading the object from database.
                         * This object is just serialized into database above.
                         */
 
			Gestion objFromDatabase = (Gestion) readJavaObject(
					conn, objectID);
			System.out.println("After Deserialization:");
			System.out.println("Object Value: " + objFromDatabase);
			System.out.println("Class: " + objFromDatabase.getClass().getName());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			/**Closing the database connection**/
			conn.close();
		}
	}
}
Cependant quand je lance sous eclipse ca me met :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
	at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1856)
	at Gestion.SerializeJavaObjects_MySQL.writeJavaObject(SerializeJavaObjects_MySQL.java:51)
	at Gestion.SerializeJavaObjects_MySQL.main(SerializeJavaObjects_MySQL.java:101)