There's two ways to do this - if the newsdocs table doesn't have any fields at all other than the doc_id and news_id, you don't even need to create an ObjEntity for it (you still need a DbEntity though). Just create a flattened relationship in the ObjEntity for News that goes to document (documentArray) and crosses the newsdoc DbEntity. Create the same in reverse. Then you can do:
news.addToDocumentArray(doc); If you don't want to do this for whatever reason, usually because you have other data in the newsdocs table like a sort order, etc, try: News newsObj = (News) dataContext.createAndRegisterNewObject(News.class); Document docObj = (Document) dataContext.createAndRegisterNewObject( Document.class); NewsDocument newsDocObj = (NewsDocument) dataContext.createAndRegisterNewObject(NewsDocument.class); // set other properties newsDocObj.setToNews(newsObj); newsDocObj.setToDocument(docObj); dataContext.commitChanges(); Cayenne will automatically resolve the primary keys for you when it commits. There is no need to commit twice. By the way, you are asking for trouble when you create a DataObject via constructor. Be sure you know what you're doing and why when doing that :) Cris On 4/5/06, I. Venuti <[EMAIL PROTECTED]> wrote: > > Hi, > > I have a table (news) where I put some infos. I'd like to associate some > documents to these news (maybe none). These documents resides in the > table documents. > I've created an association table called newsdocs, where there are the > two id's: one for news and one for documents. > > The modeler recorgnises the relashionships (infact the object Newsdocs > has only thwo relationships: toDocuments, toNews. > Also in the object News there is an array (newsdocsArray) and in the > object Documents (newsdocsArray). > > How can I create a relation between a news and a document? > > I have tried: > > 1) created News: nw1 (via createANdRegisterNewObject) > 2) created Documents: doc2 (via createANdRegisterNewObject) > 3) commit > 4) created a black record for Newsdocs: > > Newsdocs ndoc = new Newsdocs(); > ndoc.setDataContext(...) // the same used in (via > createANdRegisterNewObject) > ndoc.setToDocuments(doc2); //****** NullPointerException > ndoc.setToNews(nw1); > doc2.addToNewsdocsArray(ndoc); > nw1.add(via createANdRegisterNewObject) > > 5) commit > > Unfortunatly this doesn't work: there is a NullPointerException in ****** > > Maybe I need to understand better the use of relashionships. Any > suggestion is wellcome! > Thanks a lot > > -- Ivan > >
