Hi Joe,
Depends on if you need incrementally unique identifiers, or if you
need just need a unique number.
I have situations where I need unique "transaction ids", but they
don't have to be ordered in any particular manner.
I use java's random number generation facilities to generate a random
number, then attempt to select a datarow from the database with that
number; if I successfully select one, the number isn't unique and the
process is repeated until I get a unique number. I use 9 digit
numbers, so the likelihood of ever generating the same number twice is
very small, and in practice, the loop never gets executed twice.
Robert
On Dec 27, 2007, at 12/2712:26 PM , Joe Baldwin wrote:
> This is an upper level design question associated with how to best
> generate a unique value using Cayenne and MySQL.
>
> Step 1:
> I have an existent Entity with a primary key (oid). Per the Cayenne-
> recommended best practices I am avoiding direct access of this
> primary key and have created another attribute (orderID) that must
> be unique. So upon doing my Cayenne homework I read that the
> standard behavior in the DBMS model and the ORM model is to support
> only one auto-generated column and this is typically the PK column
> not related to my data abstraction.
>
> Step 2:
> So then I thought, well I will just use the MySQL "MAX()" function,
> find the max value, increment and voila I have generate my own
> unique number. When I tried to implement this design I ran into
> problems with SQLTemplate query attempting to bind the result of
> MAX(orderID) to an existent data object.
>
> Step 3:
> I guess I could always execute a "select *" on the entity and find
> the max attribute-value with a "for" loop, but that seems kind of
> Neanderthal. OK, so I am now thinking someone must have solved this
> sort of design issue before I bumped into it. What is the best way
> to solve this issue using Cayenne design patterns?
>
> Thanks,
> Joe
>
>
>
This archive was generated by hypermail 2.0.0 : Thu Dec 27 2007 - 13:39:05 EST