Following is my code and my repository cut. I am still receiving no results
and my database has all the data in the tables.
--- method to get Category and LinkSectionList ---
public static Collection linkSectionList(int categoryId) {
//Vector linkSectionList = new Vector();
Collection result = null;
Criteria criteria = new Criteria();
PersistenceBroker broker = null;
try {
broker =
PersistenceBrokerFactory.defaultPersistenceBroker();
broker.clearCache();
criteria.addEqualTo("id", String.valueOf(categoryId));
Query query =
new QueryByCriteria(
Category.class,
criteria);
Category category= (Category)broker.getObjectByQuery(query);
result = category.getLinkSectionList();
} catch (PBFactoryException ex) {
logger.error(ex.getMessage(), ex.fillInStackTrace());
} finally {
if (broker != null)
broker.close();
}
return result;
}
--- model bean ---
/*
* Insert.java
*
* Created on September 17, 2002, 8:18 AM
*/
package ws.phase.content.model;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.ListUtils;
import ws.phase.core.collections.GenericFactory;
import ws.phase.core.db.DBBase;
/**
*
* @author Administrator
*/
public class Category extends DBBase implements java.io.Serializable {
private String name;
private String description;
private List linkSectionList;
private boolean selected;
/** Creates new Insert */
public Category() {
linkSectionList =
ListUtils.lazyList(
new ArrayList(),
new
GenericFactory("ws.phase.content.model.LinkSection"));
}
/** Getter for property name.
* @return Value of property name.
*
*/
public java.lang.String getName() {
return name;
}
/** Setter for property name.
* @param name New value of property name.
*
*/
public void setName(java.lang.String name) {
this.name = name;
}
/** Getter for property description.
* @return Value of property description.
*
*/
public java.lang.String getDescription() {
return description;
}
/** Setter for property description.
* @param description New value of property description.
*
*/
public void setDescription(java.lang.String description) {
this.description = description;
}
/** Getter for property selected.
* @return Value of property selected.
*
*/
public boolean isSelected() {
return selected;
}
/** Setter for property selected.
* @param selected New value of property selected.
*
*/
public void setSelected(boolean selected) {
this.selected = selected;
}
/**
* Returns the linkSectionList.
* @return List
*/
public List getLinkSectionList() {
return linkSectionList;
}
/**
* Sets the linkSectionList.
* @param linkSectionList The linkSectionList to set
*/
public void setLinkSectionList(List linkSectionList) {
linkSectionList =
ListUtils.lazyList(
linkSectionList,
new
GenericFactory("ws.phase.content.model.LinkSection"));
}
}
--- repository.xml section ---
<collection-descriptor
name="linkSectionList"
element-class-ref="ws.phase.content.model.LinkSection"
auto-retrieve="true"
auto-update="true"
indirection-table="PH_CATEGORY_LINKSECTION"
>
<fk-pointing-to-this-class column="CATEGORY_ID"/>
<fk-pointing-to-element-class column="LINKSECTION_ID"/>
</collection-descriptor>
Brandon Goodin
Phase Web and Multimedia
P (406) 862-2245
F (406) 862-0354
[EMAIL PROTECTED]
http://www.phase.ws
> -----Original Message-----
> From: Raymond Lukas [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, December 11, 2002 9:49 AM
> To: OJB Users List
> Subject: RE: MtoN Questions
>
>
> Can I call you at the number below.. I will try and walk you through
> this if I can.. Basically the trick is in the xml repository file.. I
> just got this working so it is pretty fresh in my mind. It is not hard
> just a little tricky.
>
> I started to send you my code but it is huge.. Instead maybe it is
> better for me to point you to an example which you already have. If you
> download the source version of OJB you will find the test scripts. They
> have a lot of really good things in there. The one that I used to get
> this working for me was the NtoMapping. I think that it is in
> src/test/org/apache/obj/broker...
> Also on the web page there is a section called advanced OR mapping. Look
> at the section which talks about collection-descriptors. This is how you
> describe a Vector inside of an java data object. Now you are lucky
> because the intermediate table only contains the ids of the two tables
> you are mapping.. This is the easier case. I have to run right now but
> take
> A few minutes and take a peek there. Just get one way working the other
> way is exactly the same.
>
>
> ------------------ data object definition
> package com.cadence.apps.cadencepdk.model;
>
> import java.util.Collection;
> import java.util.Iterator;
> import java.io.Serializable;
>
> public class UserPrivileges implements Serializable {
>
> private int userID;
> private Collection documents;
>
> public UserPrivileges(){
> }
>
> public int getUserID(){
> return userID;
> }
> public Collection getDocuments(){
> return documents;
> }
>
> public void setUserID(int userID){
> this.userID = userID;
> }
> public void setDocuments(Collection documents){
> this.documents = documents;
> }
>
> public String toString(){
> String returnStr = "UserPrivileges userID=>" + userID + "\n";
> if (documents != null){
> Iterator objIter = documents.iterator();
> while (objIter.hasNext()){
> if (returnStr != null){
> returnStr = returnStr + "\n" +
> (Document)objIter.next();
> }
> else {
> returnStr = "\n" + (Document)objIter.next();
> }
> }
> }
> else {
> returnStr = returnStr + "\n documents is NULL";
> }
> return returnStr;
> }
> }
>
> ------------------------------------------ the query
>
> public Response execute(){
> // this give me all the docs this user can access.
> // with the filters you requested
> ResponseImpl response = null;
> List userAccessDocs = new Vector();
> UserPrivileges userObj = new UserPrivileges();
> // super criteria is just a criteria object which
> filters the // results, for now you can just pass
> null..
> Query query = new QueryByCriteria(UserPrivileges.class,
> super.criteria);
>
> try {
> broker.beginTransaction();
> userObj = (UserPrivileges)
> broker.getObjectByQuery(query);
> userAccessDocs.addAll(userObj.getDocuments());
> broker.commitTransaction();
> }
> catch (Exception exc) {
> exc.printStackTrace();
> }
>
>
> IN THE XML FILE UNDER UserPrivileges
>
> <collection-descriptor name="documents"
>
> element-class-ref="com.cadence.apps.cadencepdk.model.Document"
> auto-retrieve = "true"
> auto-update = "false"
> indirection-table = "udaccess">
> <fk-pointing-to-this-class column="userid"/>
> <fk-pointing-to-element-class column="docid"/>
> </collection-descriptor>
>
>
> I am sorry for the disorganized brain dump.. Listen if you need some
> more help send me an email at [EMAIL PROTECTED] I will try and grab
> some time and call you if I can.. Okay.. I ma just working like crazy
> but I promised myself that if I got it working I would help someone else
> get it working.. I got to run now though, let me know how this works out
> for you.. :)
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>