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

    findByPrimaryKey using Compound Key

    mcenita

      Hi!

      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();
       buffer.append(this.ID.toString());
       buffer.append(this.lang);
       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
       .lookup(PR_HEADER_JNDI);
       PR_HeaderLocal pr_header = headerHome.create(null, date);
      
       PR_ContentLocalHome contentHome = (PR_ContentLocalHome) ctx
       .lookup(PR_CONTENT_JNDI);
      
       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) {
       e2.printStackTrace();
       }
       } catch (NamingException e) {
       throw new RemoteException(e.getMessage());
       } catch (CreateException e1) {
       throw new UnableToAddNewArticleException(
       "Unable to create new article.");
       }
       }
      
      



      Thanks in advance!