J! <high five> Good to see you mate. That certainly sounds like a good option! it is a little long winded but not impossible, I just wonder if there is a better option, perhaps a setting in my SQL Server that'll do it for me? I like your approach though, its not THAT bad if that's the route I've got to go, I'd just rather avoid a code work around if its possible y'know?
Hmmm, with these auto-incrementing columns am I able to 'edit' or 'update' the value at a later stage? I'm not am I? that will cause problems when trying to re-rank the article anyway so perhaps your approach is the best option, just have it pull the highest value in the DB and stick another 1 on it? Rob On Mar 3, 1:26 pm, "James Allen" <[email protected]> wrote: > Sir Rawlins! > > <high five> > > :) > > Your problem is an interesting one. The error is like you say is caused by > Rank being an auto incrementer field. When saving the object, Transfer is > using a NULL value in the INSERT statement and this of course is illegal in > SQL server due to the field type. > > My suggestion is not ideal but would be to change the field to a normal > numeric type and then handle the auto-increment functionality in an > overridden setRank() function within the decorator. > > I would probably inject my ArticleService (if your using one) into the > decorator and have a function in there called getNextRank() which would call > a method in the gateway to get the highest rank so far from the D/B using > normal SQL. You could then increment this and store it in the article bean. > > Just thinking about this, and you may be better to have this code in the > save() method (if you are using one) in the bean. > > Long winded but I don't know if Transfer has a way around this - but knowing > me there probably is one which Bob (or Mark) will probably point out > shortly.. ;) > > Cheers, > James. > > --- > James Allen > E: [email protected] > > -----Original Message----- > From: [email protected] [mailto:[email protected]] > > On Behalf Of Sir Rawlins > Sent: 03 March 2009 12:49 > To: transfer-dev > Subject: [transfer-dev] Autoincredmening a non-primary key field. > > Morning guys, > > It's been a while :-) got myself a new challenge today. I've got a > table which stores data on articles, I've got an auto-incrementing > field on the table which denotes the articles 'rank' which I use for > ordering them and allowing users to increase or decrease an articles > rank but we keep it auto incrementing to avoid duplicates, however, > this is NOT the primary key of the table. > > The Transfer XML for this table looks as such: > > <object name="Article" table="Article" > decorator="Model.Article.Article"> > <id name="Article_ID" type="numeric" /> > <property name="Title" type="string" > column="Title" /> > <property name="ShortDescription" > type="string" > column="ShortDescription" /> > <property name="Heading" type="string" > column="Heading" /> > <property name="SubHeading" type="string" > column="SubHeading" /> > <property name="ArticleContent" > type="string" > column="ArticleContent" /> > <property name="DateCreated" type="date" > column="DateCreated" /> > <property name="DateModified" type="date" > column="DateModified" /> > <property name="Rank" type="numeric" > column="Rank" /> > <manytomany name="ArticleKeyword" > table="ArticleKeywordArticle"> > <link to="Article.Article" > column="Article_ID" /> > <link to="Article.ArticleKeyword" > column="ArticleKeyword_ID" /> > <collection type="array"> > <order property="Keyword" > order="asc" /> > </collection> > </manytomany> > </object> > > Note the 'rank' field. Now, when trying to have Transfer save a new > instance of an article I get the following spewed back at me. > > essage Error Executing Database Query. > Detail [Macromedia][SQLServer JDBC Driver][SQLServer]Cannot insert > explicit value for identity column in table 'Article' when > IDENTITY_INSERT is set to OFF > > Can you guys offer any suggestions as to what is causing this and how > it might be solved? Presumably this is caused by Transfer trying to > inset a value into the auto-incrementing field? is that correct? > > Cheers, > > Rob --~--~---------~--~----~------------~-------~--~----~ 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~----------~----~----~----~------~----~------~--~---
