Problem z Hibernate

0

Pierwszy raz używam Hibernate. Do większości doszedłem sam ale mam mały problem z relacją many-to-many,
To jest mój mapping file jednej z mojej klasy:

<hibernate-mapping>
  <class name="transportmanagement.Line" table="LINE">
      <id name="id" type="int" column="ID">
          <generator class="assigned">
          </generator>
      </id>
      
      <property name="number">
          <column name="NUMBER"/>
      </property>

      <property name="ProjectId">
          <column name="Project_id"/>
      </property>
      
      <set name="Stationes" table="Line_station" lazy="true" cascade="all" inverse="true">
          <key>
              <column name="Line_id" not-null="true"/>
          </key>
          <many-to-many class="transportmanagement.Station" >
              <column name="Stat_id"/>
          </many-to-many>
      </set>
    <one-to-one name="MyColor" class="transportmanagement.MyColor"/>
      
  </class>
</hibernate-mapping>

Problem jest mianowicie ze zbiorem Stationes. Hibernate nic nie zapisuje do tabeli łącznikowej Line_Station.
Z góry dziękuje za pomoc

0

Hibernate to dla mnie ciężka rozkminka, xml, ogromna złożoność itd.
Może dla Twoich celów wystarczy Ci taki orm: ActiveObjects.
Podobno łatwy i przyjemnym, bez xml w 100% Java.

http://www.javalobby.org/java/forums/t101428.html

0

@GhostDog, są adnotacje, a AO używa JPA tak jak nowsze wersje Hibernate.

Jak zapisujesz dane w Javie?

0

Obiekty Line są umiescczone w ArrayList o nozawie lines kod w jawie który to zapisuje wygląda miej więcej tak:
for(int i=0; i<lines.size(); i++){
Line l = (Line)lines.get(i);
l.setId(mc.getId());
l.setProjectId(p.getId());
session.save(l);
session.flush();
}

0

troche stary topic ale, czy

<set name="Stationes"....

jest poprawne? Powinno chyba byc:

<set name="lines"..

poza tym z tego co wiem do metody save przekazujesz obiekt w którym jest ten set.

0

Piszę z pamięci więc mogą być iterówki.

Zamiast:

<key> <column name="Line_id" not-null="true" /> </key>

powienieneś napisać <key column="ID" />, z tego co widzę nie masz w tabeli LINE kolumny Line_id, a kolumnę ID.

Tutaj także poponuję sprawdzić, czy encja Station ma kolumnę o nazwie Stat_id.

<many-to-many class="transportmanagement.Station"> <column name="Stat_id" /> </many-to-many>

Dochodzi jeszcze jedna rzecz: Mapujesz asocjację many-to-many, czy będziesz używał połączenia dwukierunkowego, czy może zostawisz to jako połączenie nieskierowane? Jeśli użyjesz dwukierunkowego pamiętaj o inverse="true" po jednej ze stron( obojętnie która).

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