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]

Reply via email to