Hi Fan, hi Srini,

I am just following this thread out of curiosity. I am still a newbie to
AppFuse. My question is, what was actually the problem here? Was there a
missing JPA annotation in class "Club"? By the way, for the understanding of
JPA annotations,I highly recommend the Java 5 EE tutorial. At least, for me,
it is one of the best sources on the web related to the persistence topic.
It also covers two examples. 

See here:
http://java.sun.com/javaee/5/docs/tutorial/doc/?wp406143&PersistenceIntro.html#wp78460
 
Cheers,
Martin



Fan wrote:
> 
> Hey Srini:
> 
>    I got the solution.
> 
> In my facility pojo:
> 
> @ManyToMany(fetch = FetchType.EAGER) 
>       @JoinTable(
>               name = "FACILITY_CLUB",
>               joinColumns = [EMAIL PROTECTED](name = "FACILITYID")},
>               inverseJoinColumns = [EMAIL PROTECTED](name = "CLUBID")}
>       )
>       public Set<Club> getClubs()
>       {
>               return clubs;
>       }       
> 
> 
> in my club pojo:
> 
> @ManyToMany(mappedBy="clubs", cascade=CascadeType.PERSIST)
>       public Set<Facility> getFacilities()
>       {
>               return facilities;
>       }
> 
> 
> in my DAO:
> 
> public List<Facility> getAll(String query)
> {
>    //Query sqlQuery = getSession().createSQLQuery("select * from Facility
> facility WHERE facilityID in   (select fc.FACILITYID from facility_club fc
> where fc.CLUBID = '1')").addEntity(Facility.class);           
>               
>    Query sqlQuery =
> getSession().createSQLQuery(query).addEntity(Facility.class);
>    List<Facility> facilities = sqlQuery.list();
>               
>    return facilities; 
> }
> 
> 
> Hope that helps you. Or if there is a better solution, please do let me
> know, thanks
>      
> 
> 
> Srini Bobbala wrote:
>> 
>> Fan,
>> Did you get the solution?
>> I am also facing same problem.
>> Thanks.
>> 
>> -----Original Message-----
>> From: Fan [mailto:[EMAIL PROTECTED] 
>> Sent: 15 July 2007 05:34 PM
>> To: [email protected]
>> Subject: [appfuse-user] Hibernate mapping
>> 
>> 
>> I have one POJO called Facility and another called Club, the
>> relationship
>> between them is many-to-many.
>> 
>> I want to select all the facilities that belongs to one club, how should
>> the
>> hibernate mapping look like ?
>> 
>> the following is my Facility POJO:
>> ********************************************
>> package com.smartclub.model;
>> 
>> import java.util.HashSet;
>> import java.util.Set;
>> 
>> import javax.persistence.Column;
>> import javax.persistence.Entity;
>> import javax.persistence.FetchType;
>> import javax.persistence.GeneratedValue;
>> import javax.persistence.GenerationType;
>> import javax.persistence.Id;
>> import javax.persistence.JoinColumn;
>> import javax.persistence.JoinTable;
>> import javax.persistence.ManyToMany;
>> 
>> import org.apache.commons.lang.builder.ToStringBuilder;
>> import org.appfuse.model.BaseObject;
>> 
>> @Entity
>> public class Facility extends BaseObject 
>> {    
>>      private static final long serialVersionUID =
>> 6097436406544773648L;
>>      protected Long facilityID;
>>      protected String facilityDesc;
>>      protected Set<Club> clubs = new HashSet<Club>();
>>      
>>      @Column(nullable=false, length=50)
>>      public String getFacilityDesc() {
>>              return facilityDesc;
>>      }
>>      public void setFacilityDesc(String facilityDesc) {
>>              this.facilityDesc = facilityDesc;
>>      }
>>      
>>      @Id @GeneratedValue(strategy=GenerationType.AUTO)
>>      public Long getFacilityID() {
>>              return facilityID;
>>      }       
>>      public void setFacilityID(Long facilityID) {
>>              this.facilityID = facilityID;
>>      }
>>      
>>      @ManyToMany(fetch = FetchType.EAGER) 
>>      @JoinTable(
>>              name = "FACILITY_CLUB",
>>              joinColumns = [EMAIL PROTECTED](name = "FACILITYID")},
>>              inverseJoinColumns = [EMAIL PROTECTED](name = "CLUBID")}
>>      )
>>      public Set<Club> getClubs()
>>      {
>>              return clubs;
>>      }       
>>      public void setClubs(Set<Club> clubs)
>>      {
>>              this.clubs = clubs;
>>      }
>>      
>>      public void addClub(Club club)
>>      {
>>              getClubs().add(club);
>>      }
>>      
>>      @Override
>>      public boolean equals(Object obj) {
>>              if (this == obj)
>>                      return true;
>>              if (obj == null)
>>                      return false;
>>              if (getClass() != obj.getClass())
>>                      return false;
>>              
>>              final Facility other = (Facility) obj;
>>              
>>              if (facilityDesc == null) {
>>                      if (other.facilityDesc != null)
>>                              return false;
>>              } else if (!facilityDesc.equals(other.facilityDesc))
>>                      return false;
>>              
>>              if (facilityID == null) {
>>                      if (other.facilityID != null)
>>                              return false;
>>              } else if (!facilityID.equals(other.facilityID))
>>                      return false;           
>>                              
>>              return true;
>>      }
>>      
>>      /**
>>       * @see java.lang.Object#hashCode()
>>       */
>>      public int hashCode() {
>>              final int PRIME = 31;
>>              int result = 1;
>>              result = PRIME * result + ((facilityDesc == null) ? 0 :
>> facilityDesc.hashCode());
>>              result = PRIME * result + ((facilityID == null) ? 0 :
>> facilityID.hashCode());              
>>              
>>              return result;
>>      }
>>      
>>      public String toString() {
>>              return new ToStringBuilder(this).toString();
>>      }
>> 
>> }
>> 
>> ***********************************************************
>> ***********************************************************
>> 
>> here is the method in my FacilityAction
>> 
>> public String list()
>> {
>>                      
>>         String query = "from Facility";              
>>         
>>         try
>>         {
>>              getUser();
>>              String clubID = user.getClub().getClubID().toString();
>>              
>>              if(clubID != null)
>>              {       
>>                          query += " WHERE facilityID in (select
>> FACILITY_CLUB.FACILITYID from
>> FACILITY_CLUB   where FACILITY_CLUB.CLUBID ='" 
>>                                    + clubID + "')";
>>              }    
>>         }
>>         catch(Throwable e)
>>         {
>>              
>>         }
>>         
>>              facilities = facilityManager.getAll(query);             
>>              return SUCCESS;
>> }
>> 
>> Eventually, the facilityManager.getAll(query) will call the following
>> method
>> in FacilityDaoHibernate:
>> 
>> public List<Facility> getAll(String query)
>> {
>>   return getHibernateTemplate().find(query);
>> }
>> 
>> 
>> But, it turned out to be the following error:
>> 
>> Data Access Failure
>> FACILITY_CLUB is not mapped [from com.smartclub.model.Facility WHERE
>> facilityID in (select FACILITY_CLUB.FACILITYID from FACILITY_CLUB where
>> FACILITY_CLUB.CLUBID ='1')]; nested exception is
>> org.hibernate.hql.ast.QuerySyntaxException: FACILITY_CLUB is not mapped
>> [from com.smartclub.model.Facility WHERE facilityID in (select
>> FACILITY_CLUB.FACILITYID from FACILITY_CLUB where FACILITY_CLUB.CLUBID
>> ='1')] 
>> 
>> 
>> How should I map it ??
>> -- 
>> View this message in context:
>> http://www.nabble.com/Hibernate-mapping-tf4082477s2369.html#a11603283
>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Hibernate-mapping-tf4082477s2369.html#a11824790
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to