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: users@appfuse.dev.java.net
> 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#a11785367
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