0 Replies Latest reply on Nov 9, 2004 12:09 AM by marlon cenita

    findByPrimaryKey using Compound Key

    marlon cenita Newbie


      Im emplementing a CMP which uses a compound key as the primary key. If I create an entity by calling the create method of the local home interface, the entity was succesfully created. But when i call on the method findByPrimaryKey, it throws an ObjectNotFoundException. This means that it did not found the data i just added. Why it didnt found the data i just added?

      Primary Key Class:

      public class PR_ContentPK implements Serializable {
       public Long getID() {
       return ID;
       public void setID(Long id) {
       ID = id;
       public String getLang() {
       return lang;
       public void setLang(String lang) {
       this.lang = lang;
       public Long ID;
       public String lang;
       public PR_ContentPK() {
       public PR_ContentPK(Long ID, String lang) {
       this.ID = ID;
       this.lang = lang;
       public int hashCode() {
       StringBuffer buffer = new StringBuffer();
       String key = buffer.toString();
       return key.hashCode();
       public boolean equals(Object object) {
       if (object instanceof PR_ContentPK) {
       return ((PR_ContentPK) object).ID.longValue() == this.ID
       .longValue() && ((PR_ContentPK) object).lang.equals(this.lang);
       } else {
       return false;
       public String toString() {
       return new String(this.ID + this.lang).toString();

      The method on the session bean

      public void addNewArticle(Date date, String title, String content)
       throws RemoteException, UnableToAddNewArticleException {
       try {
       Context ctx = new InitialContext();
       PR_HeaderLocalHome headerHome = (PR_HeaderLocalHome) ctx
       PR_HeaderLocal pr_header = headerHome.create(null, date);
       PR_ContentLocalHome contentHome = (PR_ContentLocalHome) ctx
       PR_ContentLocal pr_content = contentHome.create(pr_header.getID(),
       "en", title.getBytes(), content.getBytes());
       try {
       pr_content = contentHome.findByPrimaryKey(new PR_ContentPK(pr_header.getID(),"en"));
       } catch (FinderException e2) {
       } catch (NamingException e) {
       throw new RemoteException(e.getMessage());
       } catch (CreateException e1) {
       throw new UnableToAddNewArticleException(
       "Unable to create new article.");

      Thanks in advance!