Hey Martin: Thanks for the link, I am newbie to Appfuse and hibernate too.
Martin Homik wrote: > > 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#a11839812 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
