Try the following descriptor for your Person entity bean in ejb-jar.xml. I
think that should work.
<entity>
<ejb-name>person.Person</ejb-name>
<home>person.PersonHome</home>
<remote>person.Person</remote>
<ejb-class>person.PersonBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>person.PersonPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-field>
<field-name>personid_</field-name>
</cmp-field>
<cmp-field>
<field-name>name_</field-name>
</cmp-field>
<cmp-field>
<field-name>address_</field-name>
</cmp-field>
<cmp-field>
<field-name>phone_</field-name>
</cmp-field>
</entity>
Scott Ellis <[EMAIL PROTECTED]> on 06/26/2000 01:30:30 PM
Please respond to A mailing list for Enterprise JavaBeans development
<[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
cc: (bcc: Ramanand Komarraju/NYDEV/NYC/INSTINET)
Fax to:
Subject: Re: Primary key class in container managed entity bean, int type
My problem is that the code that produces the error is generated by ejbc. I
can't make that change. Rather, I have to somehow change how I define the
primary key class, the home interface, or the deployment descriptor to make
the generator understand that the primary key class cannot be directly
compared to a native type, but should call the equals method of the primary
key class that I have defined.
Does that make more sense?
-----Original Message-----
From: Juan Pablo Lorandi [mailto:[EMAIL PROTECTED]]
Sent: Monday, June 26, 2000 10:08 AM
To: [EMAIL PROTECTED]
Subject: Re: Primary key class in container managed entity bean, int
type
use
pk.personid_ = bean.personid_;
instead... if that's not what you are asking, elaborate a little further
-----Original Message-----
From: Scott Ellis [mailto:[EMAIL PROTECTED]]
Sent: Monday, June 26, 2000 1:10 PM
To: [EMAIL PROTECTED]
Subject: Primary key class in container managed entity bean, int type
I cannot seem to make this work no matter what I do. I want to create a
primary key class that contains an integer as the primary key, and the table
I am trying to access a table called person, which I've created just to see
if I can get this to work.
I've included all of the source below, exluding the deployment descriptors,
but I definitely name the person.PersonPK as the primary key class. The
problem is that the code for the bean implementation is attempting to set an
instance of my primary key class to the value of my bean's instance of
personid_:
person.PersonPK pk = null;
try {
bean.ejbCreate( arg0, arg1, arg2, arg3);
pk = bean.personid_;
....
You see that pk is of type person.PersonPK, and bean.personid_ is an int.
Of course this is a compiler error. Can anyone tell me what I am doing
wrong?
Home interface:
package person;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface PersonHome extends EJBHome
{
public Person create( int id, String name, String address, String phone )
throws CreateException, RemoteException;
public Person create( int id ) throws CreateException,
RemoteException;
public Person findByPrimaryKey( PersonPK pid ) throws FinderException,
RemoteException;
public Person findPerson( String name ) throws FinderException,
RemoteException;
}
Remote Interface:
package person;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface Person extends EJBObject
{
public void setName( String name ) throws RemoteException;
public void setAddress( String address ) throws RemoteException;
public void setPhoneNumber( String phoneNumber ) throws RemoteException;
public String getName() throws RemoteException;
public String getAddress() throws RemoteException;
public String getPhoneNumber() throws RemoteException;
}
PersonPK.java:
package person;
import java.io.Serializable;
public class PersonPK implements Serializable
{
public int personid_;
public PersonPK( int id )
{
this.personid_ = id;
}
public PersonPK() {}
public int hashCode()
{
Integer i = new Integer( personid_ );
return i.hashCode();
}
public boolean equals( Object o )
{
if( o instanceof PersonPK )
{
Integer i = new Integer( personid_ );
Integer oi = new Integer( ((PersonPK)o).personid_ );
return i.equals( oi );
}
else
return false;
}
public String toString()
{
return Integer.toString( personid_ );
}
}
PersonBean.java:
import javax.ejb.EntityContext;
public class PersonBean implements EntityBean
{
private EntityContext ctx_;
public int personid_;
public String name_;
public String address_;
public String phone_;
private transient boolean isDirty_;
// Getters and Setters
public void setName( String name ) { name_ = name; }
public void setAddress( String address ) { address_ = address; }
public void setPhoneNumber( String phoneNumber ) { phone_ = phoneNumber;
}
public String getName() { return name_; }
public String getAddress() { return address_; }
public String getPhoneNumber() { return phone_; }
// EJB Required methods
public void setEntityContext( EntityContext ctx ) { this.ctx_ = ctx; }
public void unsetEntityContext() { this.ctx_ = null; }
public boolean isModified() { return isDirty_; }
public void setModified( boolean flag ) { isDirty_ = flag; }
public void ejbActivate() {}
public void ejbPassivate() {}
public void ejbLoad() {}
public void ejbStore() { setModified( false );
}
public void ejbRemove() {}
public void ejbPostCreate( int id ) {};
public void ejbPostCreate( int id, String name, String address, String
phone ) {}
public PersonPK ejbCreate( int id ) throws CreateException
{
this.personid_ = id;
return null;
}
public PersonPK ejbCreate( int id, String name, String address, String
phone ) throws CreateException
{
this.personid_ = id;
this.name_ = name;
this.address_ = address;
this.phone_ = phone;
return null;
}
}
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". 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 "signoff EJB-INTEREST". 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 "signoff EJB-INTEREST". 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 "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".