Jon, Good Eye! Yes the category will exist (they are hard coded in the DB and the user is selecting them with checkboxes) but you're right. It should not be i that I'm getting, it should be item.
I switched that out and it worked perfectly. Thanks, J On Jan 27, 10:52 am, Jon Messer <sylvan.mes...@gmail.com> wrote: > I'm guessing this is because you are assuming the category (or dyp or > whatever) already exists in the database (your doing a get) but I think > you've got a bug here... is* i *really the value you want to retrieve "dyp" > with? or should it be item? > > for(i=1;i lte listLen(arguments.data.categories);i=i+1) > { > item=ListGetAt(arguments.data.categories,i); > cat = variables.transferObj.get(*"**dyp", i)*; > v.addCategories(cat); > > } > > What will happen here is that if there is no dyp for one of the values of i > (not item, i) you will get a new unpersisted dyp object. And then when you > try to save the video it won't be able to because that dyp hasn't been > saved. > > On Tue, Jan 27, 2009 at 6:55 AM, systemseven > <systemsevendesi...@gmail.com>wrote: > > > > > Mark, > > > Makes sense, but I'm not sure how to tell transfer what it needs to > > know. Here is the full code from my save function. Maybe that will > > help you point me in the right direction. > > > if(len(trim(arguments.data.id))) > > { > > v = > > variables.transferObj.get('video',arguments.data.id); > > v.setModifiedDate(now()); > > } > > else > > { > > v = > > variables.transferObj.new('video'); > > v.setCreatedDate(now()); > > uuid = CreateUUID(); > > } > > > if(len(trim(uuid))) > > { > > v.setId(uuid); > > } > > > v.setTitle(arguments.data.title); > > v.setSummary(arguments.data.summary); > > v.setFullStory(arguments.data.fullStory); > > v.setVideoFile(arguments.data.videoFile); > > v.setInPodcast(arguments.data.inPodcast); > > v.setInRSS(arguments.data.inRSS); > > v.setOnHomepage(arguments.data.onHomepage); > > > v.setSendToTwitter(arguments.data.sendToTwitter); > > > v.setPostingDate(postingDate); > > > if(arguments.data.onHomepage) > > { > > v.setHomeDate(homeDate); > > } > > > if(arguments.data.sendToTwitter){ > > v.setTwitterDate(twitterDate); > > } > > > if(len(trim(arguments.data.thumbnail))){ > > > v.setThumbnailFile(arguments.data.thumbnail); > > } > > > if(len(trim(arguments.data.preview))){ > > > v.setPreviewFile(arguments.data.preview); > > } > > > if(arguments.data.inPodcast){ > > > v.setPodcastFile(arguments.data.podcastFile); > > } > > > //assign the categories, first clear them > > v.clearCategories(); > > > for(i=1;i lte > > listLen(arguments.data.categories);i=i+1) > > { > > > item=ListGetAt(arguments.data.categories,i); > > cat = > > variables.transferObj.get("dyp", i); > > v.addCategories(cat); > > } > > //clear tag association, add new tags, > > assign tags to this item > > v.clearTags(); > > > for(i=1; i lte ListLen(arguments.data.tags); > > i=i+1){ > > item = > > ListGetAt(arguments.data.tags,i); > > //create the tag transfer object > > t = > > variables.transferObj.new('tag'); > > t.setId(CreateUUID()); > > t.setTagText(item); > > //save it > > variables.transferObj.save(t); > > //associate it with this video > > v.addTags(t); > > } > > > variables.transferObj.save(v); > > > On Jan 27, 7:46 am, Mark Mandel <mark.man...@gmail.com> wrote: > > > You are trying to save a video, which has a 'dyp' that has not been > > > persisted in the database. > > > > This means Transfer doesn't know what PK value to use for the object. > > > > Mark > > > > On Tue, Jan 27, 2009 at 11:40 PM, systemseven > > > > <systemsevendesi...@gmail.com> wrote: > > > > > In TransferObject 'video' manytomany 'dyp' has not been persisted in > > > > the database. > > > > > I have a video table that is joined to both a category table and a tag > > > > table > > > > > In my transfer.xml category and tag are both manytomany relationships > > > > with the video object > > > > > When saving the object, the tags get saved but the categories do not > > > > get added to the join table, it throws an error: > > > > In TransferObject 'video' manytomany 'dyp' has not been persisted in > > > > the database. > > > > > Is this a common problem? Am I just overlooking something obvious? > > > > > ====TRANSFER.XML=== > > > > <transfer> > > > > <objectDefinitions> > > > > <object name="video" table="videoManager"> > > > > <id name="id" type="string" /> > > > > <property name="title" type="string" /> > > > > <property name="summary" type="string" /> > > > > <property name="fullstory" type="string" /> > > > > <property name="videoFile" type="string" /> > > > > <property name="thumbnailFile" type="string" > > nullable="true"/> > > > > <property name="previewFile" type="string" > > nullable="true"/> > > > > <property name="podcastFile" type="string" > > nullable="true"/> > > > > <property name="inPodcast" type="numeric" /> > > > > <property name="inRSS" type="numeric" /> > > > > <property name="onHomepage" type="numeric" /> > > > > <property name="sendToTwitter" type="numeric" /> > > > > <property name="postingDate" type="date" /> > > > > <property name="twitterDate" type="date" > > nullable="true"/> > > > > <property name="homeDate" type="date" > > nullable="true"/> > > > > <property name="createdDate" type="date" /> > > > > <property name="modifiedDate" type="date" /> > > > > > <manytomany name="categories" > > table="vm_categories"> > > > > <link to="video" column="videoId"/> > > > > <link to="dyp" column="dypId"/> > > > > <collection type="array"> > > > > <order property="title" > > order="asc"/> > > > > </collection> > > > > </manytomany> > > > > > <manytomany name="tags" table="vm_tags"> > > > > <link to="video" column="videoId"/> > > > > <link to="tag" column="tagId"/> > > > > <collection type="array"> > > > > <order property="tagText" > > order="asc"/> > > > > </collection> > > > > </manytomany> > > > > > </object> > > > > > <object name="dyp" table="dyp_categories"> > > > > <id name="id" type="string" /> > > > > <property name="title" type="string" /> > > > > </object> > > > > > <object name="tag" table="tags"> > > > > <id name="id" type="string" /> > > > > <property name="tagText" type="string" /> > > > > </object> > > > > > </objectDefinitions> > > > > </transfer> > > > > =========== > > > > > =====SAVE FUNCTION===== > > > > v.clearCategories(); > > > > > for(i=1;i lte > > listLen(arguments.data.categories);i=i+1) > > > > { > > > item=ListGetAt(arguments.data.categories,i); > > > > cat = > > variables.transferObj.get("dyp", i); > > > > v.addCategories(cat); > > > > } > > > > > ======================== > > > > -- > > > E: mark.man...@gmail.com > > > W:www.compoundtheory.com --~--~---------~--~----~------------~-------~--~----~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups "transfer-dev" group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~----------~----~----~----~------~----~------~--~---