Re: Design Issue: unique value

From: Robert Zeigler (robert..uregumption.com)
Date: Thu Dec 27 2007 - 13:36:43 EST

  • Next message: Joe Baldwin: "Re: Design Issue: unique value"

    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