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]
