Duplikowanie się danych w relacji many-to-one w Hibernate

0

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:
user image

0

Cześć,

Próowałeś ustawić
<many-to-one fetch="subselect" ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1