I don't think this will work unless you are willing to lock the entire table before you execute this.  Otherwise, you will have a race condition for the unique key.
 
Jim
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Vinay Menon
Sent: Friday, May 04, 2001 2:21 PM
To: JBOSS
Subject: Re: [JBoss-user] EJB question

Ralph,
   Just to add that the autoincrement needn't be database specific... your ejb could just have
 
keyValue = keyValue+1;
 
where keyValue maps to the underlying column in the database  table.
 
That way autoincrement is not database specific! If you want to use to the database specific primary key generation you could do so.
 
regards.
 
Vinay

----- Original Message -----
From: Ralph Jensen
Sent: Friday, May 04, 2001 1:09 PM
To: [EMAIL PROTECTED]
Subject: Re: [JBoss-user] EJB question

Thanks. But that is actually much more than I want. I only need a unique
INT for primary keys.

For the moment I will try this:

In the sql-script:

create table uniqueInteger(
    pk INTEGER constraint pk_unique primary key,
    uniqueID INTEGER
);

insert into uniqueInteger VALUES( 1, 1 );


Then in the bean:
SELECT uniqueID from uniqeInteger;

save uniqueID in variable ( let's call it 'uniqueVar' )

then:

UPDATE uniqueInteger SET uniqueID = uniqueVar+1 WHERE pk = 1;


I think that's basically Vinay's suggestion. Does that look reasonable?
That's a lot of database access to get a unique primary key, just to be
able to return it from ejbCreate() - especially in light of the fact, that
databases do it automatically, if the table is created accordingly. Isn't
this kind of thing done regularly?


I know this has nothing to do with jBoss. Thank you.  :-)

Ralph

----- Original Message -----
From: Jim Downing <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 04, 2001 5:47 PM
Subject: Re: [JBoss-user] EJB question


> Check out www.activescript.co.uk for a non-free ($99) component to
generate
> unique ids. The author has also posted the pattern on theserverside.com,
so
> you have something to work to if you want to implement it yourself.
>
> jim
>
> ----- Original Message -----
> From: "Ralph Jensen" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Friday, May 04, 2001 10:25 AM
> Subject: Re: [JBoss-user] EJB question
>
>
> > The portability would be there in terms of data access. How to tell the
> > database to autoincrement when I create a table is probably always
> database
> > specific. Or not?
> >
> > I'm not good at SQL. So how would your suggestion look in code? What
would
> > the key generator bean look like? Off which table would it work?
> >
> > Ralph
> >
> > ----- Original Message -----
> > From: Vinay Menon <[EMAIL PROTECTED]>
> > To: JBOSS <[EMAIL PROTECTED]>
> > Sent: Friday, May 04, 2001 4:29 PM
> > Subject: Re: [JBoss-user] EJB question
> >
> >
> > Why don't you just use a primary key generator bean to encapsulate the
key
> > genaration? The ejbCreate can then work off that ejb and assign the
> primary
> > key field to the primary key generated field? so your autoincrement
> > essentially will not be on the same table as the ejb but a different
one
> > and the primary key generator will work off that table. [Also makes
sure
> > that you have complete protability in terms of the database server!]
> >
> > Vinay
> >
> >
> >
> > ----- Original Message -----
> > From: Ralph Jensen
> > Sent: Friday, May 04, 2001 8:52 AM
> > To: [EMAIL PROTECTED]
> > Subject: [JBoss-user] EJB question
> >
> >
> > I asked this question elsewhere, but didn't get an answer. So:
> >
> > An entity bean's ejbCreate(...) method MUST return the primary key.
That
> is
> > not a problem, if I specify the primary key myself and pass it to the
> > create(...) method.
> >
> > But I want to let the database assign the primary key by creating a
table
> > with an AUTOINCREMENT default for the primary key column, like in this
> > example using Cloudscape (part of SUN's J2EE v1.3):
> >
> > create table myTable(
> >    id INT DEFAULT AUTOINCREMENT CONSTRAINT pk_id PRIMARY KEY,
> >    someString VARCHAR(6),
> >    etc.
> > );
> >
> > Then I can use INSERT like this:
> >    INSERT INTO mytable ( someString ) VALUES ( 'Hello' );
> >
> > The database then assigns a unique value to the id column of that new
> > record.
> >
> > If I do this in the ejbCreate(...) method of my bean my problem is: How
do
> > I know that value in order to return it? Is that possible?
> >
> > Thanks
> >
> > Ralph Jensen
> >
> >
> > _______________________________________________
> > JBoss-user mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/jboss-user<br
> clear=all><hr>Get
> > your FREE download of MSN Explorer at <a
> > href="http://explorer.msn.com">http://explorer.msn.com</a><br></p>
> >
> >
> >
> > _______________________________________________
> > JBoss-user mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/jboss-user
> >
> >
>
>
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user


_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user



Get your FREE download of MSN Explorer at http://explorer.msn.com

Reply via email to