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".