Dear All,
I have been stucked in a problem for nearly a week...I have three tables namely fixture,team,fixture_team....fixture and team have many-to-many relationship and fixture_team is the central table....Their XML mapping is
Code:
        <class name="Fixture" table="fixture">
           <id name="id">
             <generator class="native"/>
           </id>
          <many-to-one
            name="ground"
            column="ground_id"
            class="Ground"
            not-null="true"/>
          <many-to-one
            name="series"
            column="series_id"
            class="Series"
            not-null="true"/>
          <many-to-one
            name="sessionOfPlay"
            column="session_of_play"
            class="AspectVariation"/>
          <set name="teams" inverse="false" cascade="save-update">
            <key column="fixture_id"/>
            <one-to-many class="FixtureTeam"/>
          </set>
       </class>
       <class name="Team" table="team">
         <id name="id">
           <generator class="native"/>
         </id>
         <many-to-one
           name="teamType"
           column="team_type_id"
           class="TeamType"
           not-null="true"/>
         <set name="series" table="series_team">
           <key column="team_id"/>
           <many-to-many column="series_id"
           unique="true"
           class="Series"/>
         </set>
         <set name="fixtures" inverse="true" cascade="save-update">
          <key column="team_id"/>
          <one-to-many class="FixtureTeam"/>
         </set>
      </class>
      <class name="FixtureTeam" table="fixture_team">
       <composite-id >
          <key-many-to-one name="team" class="Team" column="team_id" />
          <key-many-to-one name="fixture" class="Fixture" column="fixture_id" />
        </composite-id>
      </class>
The problem is when I insert "fixture_team" records through setTeams() method of FixtureTeam class as::
Code:
 Team team = (Team)s.load(Team.class,new Integer(17));
  Fixture fixture = new Fixture();
  fixture = (Fixture)s.load(Fixture.class, new Integer(1));
  Set set = new HashSet();
  set.add(team);
  fixture.setTeams(set);
  s.merge(fixture);
  s.getTransaction().commit();
I get the following Exception::
Code:
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of uk.co.planetbeyond.Beans.FixtureTeam.team
   at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:195)
   at org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValue(AbstractComponentTuplizer.java:87)
   at org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValues(AbstractComponentTuplizer.java:93)
   at org.hibernate.tuple.component.PojoComponentTuplizer.getPropertyValues(PojoComponentTuplizer.java:109)
   at org.hibernate.type.ComponentType.getPropertyValues(ComponentType.java:376)
   at org.hibernate.type.ComponentType.replace(ComponentType.java:455)
   at org.hibernate.type.EntityType.replace(EntityType.java:289)
   at org.hibernate.type.CollectionType.replaceElements(CollectionType.java:507)
   at org.hibernate.type.CollectionType.replace(CollectionType.java:574)
   at org.hibernate.type.TypeFactory.replace(TypeFactory.java:505)
   at org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:496)
   at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:267)
   at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:240)
   at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
   at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:705)
   at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:689)
   at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:693)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:324)
   at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
   at $Proxy0.merge(Unknown Source)
   at uk.co.planetbeyond.test.main(test.java:109)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:324)
   at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:169)
   ... 23 more
I am unable to figure out the problem.Thanks in advance.