Creating Entity bean for a 'table' without PrimaryKey

Hi,

I have a relation table without primarykey. My table name is "favorite" and it has:
worker_id   int   (FK to "worker" table)
task_id   int   (FK to "tasks" table)
priority   int

If i want to create an Entity Bean, we usually create all the 'columns' with getter and setter along with the column type. For example, (just an example):
           
     /**
       * @author bj 17.09.2004
       * Name
       *
       * @ejb.interface-method view-type = "both"
       * @ejb.persistence column-name = "name"
       * @return
       */
      public abstract String getName();

      /**
       * @ejb.interface-method view-type = "both"
       * @param name
       */
      public abstract void setName(String name);


The method ejbCreate() should have the return type of PrimaryKey. My every other table has a PK field and i do like:
     public Integer ejbCreate() throws CreateException {
            return null;
    }

Since my "Favorite" table doesn't have a PK field, how can i create en Entity bean for that table? How to solve the problem of ejbCreate() return type?
LVL 32
ldbkuttyAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

TimYatesCommented:
It does have a primary key.  The primary key is a composite of:

  worker_id and task_id

isn't it?

Have a look at this:  http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/CMP8.html (for CMP) and this http://java.sun.com/j2ee/1.4/docs/tutorial/doc/BMP4.html (for BMP)

0
ldbkuttyAuthor Commented:
I understand that PK is combination of worker_id and task_id, but i cannot/shouldn't  create the FK fields(getter, setter) in my Entity Bean. Instead I have to make the relation for those FK's.

For example, in my "Tasks" table, i have 'taskworker_id' FK column to "TaskWorker" table. In my Entity bean, i have:

     /**
       * @author bj 16.09.2004
       *
       * Task TaskWorker Relation
       *
       * @ejb.interface-method
       *       view-type = "local"
       *
       * @ejb.relation
       *       name = "taskworker_task"
       *          role-name = "task from taskworker"
       *
       * @jboss.relation
       *       fk-column = "'taskworker_id"
       *       related-pk-field = "id"
       *       fk-constraint = "true"
       */
      public abstract TaskWorkerLocal getTaskWorker();

      /**
       * @ejb.interface-method view-type = "local"
       * @param taskWorker
       */
      public abstract void setTaskWorker(TaskWorkerLocal taskWorker);
0
TimYatesCommented:
> Instead I have to make the relation for those FK's.

But you need to be able to access the "priority" field, so you will need to create an Entity bean for that table...

public class FavouritePK implements Serializable
{
    Worker worker ;
    Task task ;

    public FavouritePK() {}
    public FavouritePK( Worker worker, Task task )
    {
        this.worker = worker ;
        this.task = task ;
    }

    public Worker getWorker()
    {
        return worker ;
    }
   
    public Worker getTask()
    {
        return task ;
    }

    public boolean equals( Object o )
    {
        if( o == null || !(o instanceof FavouritePK ) )
            return false ;
        FavouritePK other = (FavouritePK)o ;
        return this.worker.equals( other.worker ) && this.task.equals( other.task ) ;
    }
 
    public int hashCode()
    {
        return worker.hashCode() ^ task.hashCode() ;
    }
}

Then, in your Entity bean:

public abstract class FavouriteBean implements javax.ejb.EntityBean
{
    Worker worker ;
    Task task ;
    int priority ;

    public FavouritePK ejbCreate( Worker w, Task t )
    {
        setWorker( worker ) ;
        setTask( task ) ;
        setPriority( priority ) ;
        return null ;
    }

    ...rest of your code...
}
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

TimYatesCommented:
>     public FavouritePK ejbCreate( Worker w, Task t )

should be

    public FavouritePK ejbCreate( Worker w, Task t, int priority )
0
ldbkuttyAuthor Commented:
sorry for late...but that worked great.

Thanks.
0
TimYatesCommented:
:-)  Cool :-)

Good luck with it :-)

Tim
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java EE

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.