Isn't that going to have lousy performance? after all, the Max() function has
to do a table-scan to get that value?
-Ron
--- Santiago Gala <[EMAIL PROTECTED]> wrote:
>
>
> Phil Windley wrote:
>
> > Its faster to write, to be sure, but seems like its going to establish a
> > new connection for every creation event. If those events are a small
> > percentage of overall operations, it wouldn't be a problem, but I'm
> > envisioning a system that has large numbers of creations, so this would be
> > pretty expensive.
> >
> > Anyone else have ideas on getting a serial type (preferably from
> > Postgresql) to work with in CMP to automatically create the PK for the
> > bean?
> >
>
> What I'm doing is:
>
> Create a findGreatestId() method for each CMP bean. the where clause would be
> something like:
>
> WHERE id = (SELECT max(id) FROM table)
>
> Call it inside the ejbCreate method to get the biggest used id, increment it
> and
> assign it before returning. Warning: it will raise and exception, that must
> be
> caught, if the table is empty. In this case, set id to 1.
>
> It should work well, it is completely portable and it uses all the connection
> pooling and similar characteristics in Jonas.
>
> It is not very elegant, but we have seen no problems using it. If you require
> permanent unique ids, and you are removing objects, it is not for you, as the
> same
> id can be reused if the last object is created and then removed.
>
> >
> > --phil--
> >
> > On Fri, 23 Jun 2000 11:16:16 -0600 [EMAIL PROTECTED] writes
> > +--------------------
> > | I couldn't get the serial type to work with CMP either. We added a
> function
> > like the following in each of our entity beans to use automatically
> generated i
> > d's from postgres (mytable_id_seq is a SEQUENCE):
> > |
> > | private Integer _getNewID()
> > | throws SQLException
> > | {
> > | Connection conn=_dsource_.getConnection();
> > | String sql="select nextval('mytable_id_seq')";
> > | Statement stmt=conn.createStatement();
> > | ResultSet rs=stmt.executeQuery(sql);
> > | if(!rs.next())
> > | throw new SQLException("Unable to get next
> sequence.");
> > | Integer newid=new Integer(rs.getInt(1));
> > | stmt.close();
> > | conn.close();
> > | return newid;
> > | }
> > |
> > | I know this isn't an ideal solution, but it is faster than two beans..
> > |
> > | -Erik
> > |
> > |
> > | At 09:55 AM 6/23/00 -0600, you wrote:
> > | >
> > | >I use Postgresql as well, but I couldn't figure out how to get container
> > | >managed entity beans to automatically set the primary key from the
> SEQUENCE
> > | >data type. I ended up creating a session bean to grab sequence numbers
> > | >from the database each time I created an entity bean.
> > | >
> > | >Is there a better way? I'm all for it---creating two beans every time I
> nee
> > d
> > | >one is not my idea of a good way to spend time.
> > | >
> > | >--phil--
> > | >
> > | >On Thu, 15 Jun 2000 08:33:58 -0400 "John M. Jones" writes
> > | >+--------------------
> > | >| Does your database support serial fields? These fields generate a
> counter
> > | >| for each record added. There's a trick to getting the next id when
> calling
> > | >| create(), but it eliviates coding a unique id generator. I use
> PostgreSQL,
> > | >| and it has a serial data type.
> > | >|
> > | >| Hope this helps,
> > | >| John
> > | >|
> > | >| -----Original Message-----
> > | >| From: [EMAIL PROTECTED]
> > | >| [mailto:[EMAIL PROTECTED]]On Behalf Of Blasius Lofi
> > | >| Dewanto
> > | >| Sent: Thursday, June 15, 2000 5:13 AM
> > | >| To: [EMAIL PROTECTED]
> > | >| Subject: Automatic counter
> > | >|
> > | >|
> > | >| Hi all,
> > | >|
> > | >| I just wonder, whether someone can help me...
> > | >|
> > | >| How can I implement a counter or a unique id
> > | >| for my PrimaryKey in EJB? Because I don't want
> > | >| to take care about it in my EJB.
> > | >|
> > | >| Another question:
> > | >| When I quit from the EJBServer through the JonasAdmin,
> > | >| I always get this exception:
> > | >| Cannot unbind Datasources: java.lang.ClassCastException
> > | >| Is this normal?
> > | >|
> > | >| Thank's a lot!
> > | >| --
> > | >| ---------------------------------------------------
> > | >| Blasius Lofi Dewanto
> > | >| ---------------------------------------------------
> > | >| OpenUSS - Open Source University Support System
> > | >| http://openuss.sourceforge.net
> > | >| ---------------------------------------------------
> > | >|
> > | >|
> > | >| __________________________________________________________________
> > | >| Do You Yahoo!?
> > | >| Gesendet von Yahoo! Mail - http://mail.yahoo.de
> > | >| Yahoo! Auktionen - gleich ausprobieren - http://auktionen.yahoo.de
> > | >|
> > | >| ----
> > | >| To unsubscribe, send email to [EMAIL PROTECTED] and
> > | >| include in the body of the message "unsubscribe jonas-users".
> > | >| For general help, send email to [EMAIL PROTECTED] and
> > | >| include in the body of the message "help".
> > | >|
> > | >| ----
> > | >| To unsubscribe, send email to [EMAIL PROTECTED] and
> > | >| include in the body of the message "unsubscribe jonas-users".
> > | >| For general help, send email to [EMAIL PROTECTED] and
> > | >| include in the body of the message "help".
> > | >|
> > | >
> > | >----
> > | >To unsubscribe, send email to [EMAIL PROTECTED] and
> > | >include in the body of the message "unsubscribe jonas-users".
> > | >For general help, send email to [EMAIL PROTECTED] and
> > | >include in the body of the message "help".
> > | >
> > | >
> > |
> > |
> >
> > ----
> > To unsubscribe, send email to [EMAIL PROTECTED] and
> > include in the body of the message "unsubscribe jonas-users".
> > For general help, send email to [EMAIL PROTECTED] and
> > include in the body of the message "help".
>
> ----
> To unsubscribe, send email to [EMAIL PROTECTED] and
> include in the body of the message "unsubscribe jonas-users".
> For general help, send email to [EMAIL PROTECTED] and
> include in the body of the message "help".
__________________________________________________
Do You Yahoo!?
Get Yahoo! Mail - Free email you can access from anywhere!
http://mail.yahoo.com/
----
To unsubscribe, send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe jonas-users".
For general help, send email to [EMAIL PROTECTED] and
include in the body of the message "help".