Witam, natknąłem się na problem z duplikatami danych w trakcie dodawania encji połączonych relacją many-to-one w hibernate. Mam tabelę "Trip" oraz "Place", gdzie jedno miejsce może być przypisane do wielu wycieczek. W momencie dodawania pierwszy raz wycieczki wraz z miejscem wszystko ładnie działa, lecz w momencie dodania wycieczki z tym samym miejscem (wszystkie pola takie same), oprócz nowego rekordu wycieczki mam także nowy rekord miejsca dokładnie z tymi samymi danymi co poprzedni... W jaki sposób mogę uniknąć takiego zachowania, tak aby jeden rekord miejsca mógł faktycznie być przypisany do wielu wycieczek?
Klasa "Trip":
public class Trip implements java.io.Serializable {
private int idTrip;
private int idHotel;
private Date date;
private int cost;
private int profit;
private String organisator;
private int period;
private String food;
private String transport;
private int persons;
private int kidsAmount;
private String ownerName;
private String ownerLastName;
private Place place;
- konstruktory, get() i set(),
Klasa "Place":
public class Place implements java.io.Serializable {
private int idPlace;
private String country;
private String city;
private String island;
private String information;
- konstruktory, get() i set(),
Mapowanie "Trip":
<hibernate-mapping>
<class name="pl.th.java.biuro.hibernate.Trip" table="Trip">
<id column="idTrip" name="idTrip" type="int"/>
<property column="date" name="date" type="date"/>
<property column="cost" name="cost" type="int"/>
<property column="profit" name="profit" type="int"/>
<property column="organisator" name="organisator" type="string"/>
<property column="period" name="period" type="int"/>
<property column="food" name="food" type="string"/>
<property column="transport" name="transport" type="string"/>
<property column="persons" name="persons" type="int"/>
<property column="kidsAmount" name="kidsAmount" type="int"/>
<property column="idHotel" name="idHotel" type="int"/>
<many-to-one name="place" column="idPlace" class="pl.th.java.biuro.hibernate.Place" not-null="true" cascade="all" />
</class>
</hibernate-mapping>
Mapowanie "Place":
<hibernate-mapping>
<class name="pl.th.java.biuro.hibernate.Place" table="Place">
<id column="idPlace" name="idPlace" type="int">
<generator class="native"/>
</id>
<property column="country" name="country" type="string"/>
<property column="city" name="city" type="string"/>
<property column="island" name="island" type="string"/>
<property column="information" name="information" type="string"/>
</class>
</hibernate-mapping>
Dodatkowo zamieszczam "wygląd" tych dwóch tabel w bazie MySQL: