Bonjour,
J'essaie d'ajouter un enregistrement dans une table qui contient une clé étrangère vers une autre table. Voici mes fichiers :
*) beanDAO.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
public class ReservationItemDAO extends AbstractDao {
	public ReservationItemDAO() {
		super();
	}
 
	public void create(ReservationItem reservationItem)
			throws DataAccessLayerException {
		super.saveOrUpdate(reservationItem);
	}
//autres méthodes
}
la méthode "saveOrUpdate" est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
protected void saveOrUpdate(Object obj) {
		try {
			this.startOperation();
			this.session.saveOrUpdate(obj);
			this.tx.commit();
		} catch (HibernateException e) {
			this.handleException(e);
		} finally {
			HibernateFactory.close(this.session);
		}
	}
*)bean.java
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
 
public class ReservationItem implements java.io.Serializable {
 
	private int reservationItemId;
	private Reservation reservation;
	private double quotedPrice;
	private Set reservationItemParkings = new HashSet(0);
 
	public ReservationItem() {
	}
 
	public ReservationItem(int reservationItemId, Reservation reservation) {
		this.reservationItemId = reservationItemId;
		this.reservation = reservation;
	}
 
	public ReservationItem(int reservationItemId, Reservation reservation,
			double quotedPrice, Set reservationItemParkings) {
		this.reservationItemId = reservationItemId;
		this.reservation = reservation;
		this.quotedPrice = quotedPrice;
		this.reservationItemParkings = reservationItemParkings;
	}
 
	public int getReservationItemId() {
		return this.reservationItemId;
	}
 
	public void setReservationItemId(int reservationItemId) {
		this.reservationItemId = reservationItemId;
	}
 
	public Reservation getReservation() {
		return this.reservation;
	}
 
	public void setReservation(Reservation reservation) {
		this.reservation = reservation;
	}
 
	public double getQuotedPrice() {
		return this.quotedPrice;
	}
 
	public void setQuotedPrice(double d) {
		this.quotedPrice = d;
	}
 
	public Set getReservationItemParkings() {
		return this.reservationItemParkings;
	}
 
	public void setReservationItemParkings(Set reservationItemParkings) {
		this.reservationItemParkings = reservationItemParkings;
	}
 
}
*)bean.hbm.xml
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
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25 mars 2010 11:01:05 by Hibernate Tools 3.2.4.GA -->
<hibernate-mapping>
    <class name="package.ReservationItem" table="reservation_item" catalog="parking">
        <id name="reservationItemId" type="int">
            <column name="reservation_item_ID" />
            <generator class="assigned" />
        </id>
        <many-to-one name="reservation" class="package.Reservation" fetch="select">
            <column name="reservation_ID" not-null="true" />
        </many-to-one>
        <property name="quotedPrice" type="double">
            <column name="quoted_price" precision="10" />
        </property>
        <set name="reservationItemParkings" inverse="true" lazy="true" table="reservation_item_parking" fetch="select">
            <key>
                <column name="reservation_item_ID" not-null="true" />
            </key>
            <one-to-many class="package.ReservationItemParking" />
        </set>
    </class>
</hibernate-mapping>
*)mon fichier test.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
public class Test2 {
	public static void main(String[] args) {
		ReservationItemDAO reservationItemDAO = new ReservationItemDAO();
		ReservationItem reservationItem = new ReservationItem();
ReservationDAO reservationDAO = new ReservationDAO(); 
Integer entier = new Integer(2); 
Reservation reservation = reservationDAO.find(entier);
		  reservationItem.setQuotedPrice(15.2);
		  reservationItem.setReservation(reservation);  reservationItem.setReservationItemParkings(reservationItemParkings);
	 reservationItemDAO.create(reservationItem);
}}
Ma question est la suivante :
Je suis obligé de chercher un Object de type "Reservation" et après je fais appel à cet object pour le set :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
reservationItem.setReservationItemParkings(reservationItemParkings);
alors que normalement j'aurai besoin uniquement de l'id de cet Object qui n'est autre que la valeur de la clé étrangère vers la table reservation. Car dans ce cas je suis obligé de retourner la liste de Object de ma table reservationItem pour que je l'utilise pour mon setReservationItemParkings(reservationItemParkings).

Merci d'avance et j'espère que j'ai bien exprimé mon souci.