Hi.
I've been on this problem for days now and I'm crying out for some help.
What I am trying to achive is to have a cmp bean that is mapped to a
database table in which the primary key is also an identity column (ie self
incrementing) I've read a lot of the queries and answers that have been sent
but I havent found a solution that suffices.
Versions i'm using are: JBoss 2.2.2 with Tomcat 3.2.1 and SQL Server 7 on an
NT4 server.
What I'm trying to achieve is when i create a new CustomerDetails Bean via
the Home.create method I want the ejbCreate method to look up the database
to find the max(company_id) and assign the primary key value of the new
CustomerDetails Bean i'm trying to create to max(company_id) + 1;
I successfully deploy the bean (sometimes, I wont even begin to explain the
inconsistencies I've been experiencing with Jboss deployment - for instance.
it spits out error messages regarding method types that don't even exist- is
there a caching issue here???);
Then I have a jsp client that access the cmp bean CustomerDetails. When I
reference home.create() method the container management tries to insert into
the database a row with the column value of the primary key as null;
I assumed that when calling the home.create() method, the corresponding
ejbCreate method in the remote bean CustomerDetailsEJB would be called; but
it doesnt appear to be getting there and I have no way of telling;
HELP? Please? Anyone? Things are growing out of my forehead that shouldnt be
as a result of this "hic-up";
Thanks in advance.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
My table definition is:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CREATE TABLE COMPANY_DETAILS (
COMPANY_ID numeric (18, 0) NOT NULL , // this column
is the identify (self incrementing) column
COMPANY_NAME varchar (255) NULL ,
COMPANY_ABN varchar (20) NULL ,
COMPANY_DESC varchar (255) NULL ,
COMPANY_LOGO_IMG varchar (255) NULL
)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
My Home class is as follows:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.atomicmedia.totalpromoter.dao.companydetails;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface CompanyDetailsHome extends EJBHome {
/**
* create a new CompnayDetails Record
public CompanyDetails create(String id)
throws RemoteException, FinderException;
*/
/**
* Find a CompnayDetails Record by the primary key
*/
public CompanyDetails findByPrimaryKey(Integer aKey)
throws RemoteException, FinderException;
/**
* create an ejb
*/
public CompanyDetails create()
throws RemoteException, CreateException;
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
My Entity Bean is as follows
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.atomicmedia.totalpromoter.dao.companydetails;
import javax.ejb.*;
import javax.naming.*;
import java.sql.*;
public class CompanyDetailsEJB implements EntityBean {
EntityContext ejbContext;
public Integer companyId;
/* Container managed fields */
public String companyName;
public String companyAbn;
public String companyDesc;
public String companyLogoImg;
public CompanyDetailsEJB() {
}
public void setEntityContext(EntityContext context){
ejbContext = context;
}
public void unsetEntityContext(){
ejbContext = null;
}
private Connection getConnection() throws SQLException,
javax.naming.NamingException {
InitialContext jndiContext = new InitialContext();
javax.sql.DataSource source = (javax.sql.DataSource)
jndiContext.lookup("java:TotalPromoterPool");
return source.getConnection();
}
public Integer ejbCreate() {
Integer cId = null;
Connection con = null;
try {
con = this.getConnection();
PreparedStatement sqlStmt =
con.prepareStatement("INSERT INTO company_details " +
"(company_name " +
",company_abn " +
",company_desc " +
",company_logo_img) " +
"VALUES " +
"(null,null,null,null)");
sqlStmt.execute();
sqlStmt = con.prepareStatement("SELECT
MAX(company_id) FROM company_details");
ResultSet rs = sqlStmt.executeQuery();
if (rs.next())
cId = new Integer(rs.getInt("COMPANY_ID"));
}
catch (SQLException sqle) {
throw new EJBException(sqle);
}
catch (javax.naming.NamingException e) {
throw new EJBException(e);
}
finally {
try {
if (con!=null)
con.close();
}
catch (SQLException sqle) {
throw new EJBException(sqle);
}
}
this.companyId = cId;
return cId;
}
public void ejbPostCreate() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void ejbLoad() {
}
public void ejbStore() {
}
public void ejbRemove() {
}
public void setCompanyAbn(java.lang.String _companyAbn) {
companyAbn = _companyAbn;
}
public java.lang.String getCompanyAbn() {
return companyAbn;
}
public void setCompanyDesc(java.lang.String _companyDesc) {
companyDesc = _companyDesc;
}
public java.lang.String getCompanyDesc() {
return companyDesc;
}
public void setCompanyLogoImg(java.lang.String _companyLogoImg) {
companyLogoImg = _companyLogoImg;
}
public java.lang.String getCompanyLogoImg() {
return companyLogoImg;
}
public void setCompanyName(java.lang.String _companyName) {
companyName = _companyName;
}
public java.lang.String getCompanyName() {
return companyName;
}
}
Chris Tragas
-----------------------------------------
[EMAIL PROTECTED]
+61 3 9695 5711 direct
+61 3 0402 28 10 20 mobile
-----------------------------------------
a t o m i c m e d i a
Leading Partners Online
Level 1 / 216 City Road
Southbank, Melbourne, Vic 3006
Australia.
+61 3 9695 5777 tel
+61 3 9695 5700 fax
-----------------------------------------
www.atomicmedia.com
-----------------------------------------
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user