0 Replies Latest reply on Sep 12, 2006 4:37 PM by Mark Sohm

    mappedBy reference an unknown property

    Mark Sohm Newbie

      Hi,

      I'm trying to create a one to many bidirectional relationship but am having some problems. Whenever I deploy the application in JBoss I get an error. I've searched online, and in an EJB 3.0 book and as far as I know I am doing things correctly. Below are my 2 classes, the tables and the error from JBoss. If anyone can point me in the right direction it would be helpful. I am using JBoss version 4.0.4.GA. This is my first EJB application, so I appoligize if this is a simple error. Thanks!

      User.java

      package com.rim.pushMagic.entity;
      
      //The Users entity bean
      
      import javax.persistence.*;
      
      @Entity
      @Table(name="USERS")
      @SequenceGenerator(name="USERID_SEQUENCE_GEN", sequenceName="USERID_SEQUENCE",
       initialValue=2, allocationSize=1)
      public class User implements java.io.Serializable
      {
      
       //Variables for the table columns.
       private int _userID;
       private UserRole userRole;
       private int _groupID;
       private String _name;
       private String _email;
       private String _password;
       private int _active;
      
       @Id
       @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USERID_SEQUENCE_GEN")
       @Column(name="USERID")
       public int getUserID() { return _userID; }
       public void setUserID(int userID) { _userID = userID; }
      
       @ManyToOne
       @JoinColumn(name="ROLEID")
       public UserRole getUserRole() { return _serRole; }
       public void setUserRole(UserRole userRole) { this.userRole = userRole; }
      
       @Column(name="GROUPID")
       public int getGroupID() { return _groupID; }
       public void setGroupID(int groupID) { _groupID = groupID; }
      
       @Column(name="NAME")
       public String getName() { return _name; }
       public void setName(String name) { _name = name; }
      
       @Column(name="EMAIL")
       public String getEmail() { return _email; }
       public void setEmail(String email) { _email = email; }
      
       @Column(name="PASSWORD")
       public String getPassword() { return _password; }
       public void setPassword(String password) { _password = password; }
      
       @Column(name="ACTIVE")
       public int getActive() { return _active; }
       public void setActive(int active) { _active = active; }
      }
      


      UserRole.java

      package com.rim.pushMagic.entity;
      
      //The UserRoles entity bean
      
      import javax.persistence.*;
      import java.util.ArrayList;
      import java.util.Collection;
      
      
      @Entity
      @Table(name="USERROLES")
      
      public class UserRole implements java.io.Serializable
      {
       private int _roleID;
       private String _roleName;
       private int _active;
       private Collection<User> _users = new ArrayList<User>();
      
      
       @Id
       @Column(name="ROLEID")
       public int getRoleID() { return _roleID; }
       public void setRoleID(int roleID) { _roleID = roleID; }
      
       @Column(name="ROLENAME")
       public String getRoleName() { return _roleName; }
       public void setRoleName(String roleName) { _roleName = roleName; }
      
       @Column(name="ACTIVE")
       public int getActive() { return _active; }
       public void setActive(int active) { _active = active; }
      
       @OneToMany(mappedBy="userRole")
       public Collection<User> getUsers() { return _users; }
       public void setUsers(Collection<User> users) { _users = users; }
      }
      


      UserRoles.sql
       CREATE TABLE "USERROLES"
       ( "ROLEID" NUMBER(*,0) NOT NULL ENABLE,
       "ROLENAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
       "ACTIVE" NUMBER(*,0),
       CONSTRAINT "USERROLES_PK" PRIMARY KEY ("ROLEID") ENABLE
       ) ;
      


      Users.sql
       CREATE TABLE "PUSHMAGIC"."USERS"
       ( "USERID" NUMBER(*,0) NOT NULL ENABLE,
       "ROLEID" NUMBER(*,0) NOT NULL ENABLE,
       "GROUPID" NUMBER(*,0) NOT NULL ENABLE,
       "NAME" VARCHAR2(100 BYTE),
       "EMAIL" VARCHAR2(100 BYTE),
       "ACTIVE" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE,
       "PASSWORD" VARCHAR2(100 BYTE) NOT NULL ENABLE,
       CONSTRAINT "USERS_PK" PRIMARY KEY ("USERID") ENABLE,
       CONSTRAINT "USERS_GROUPID_FK" FOREIGN KEY ("GROUPID")
       REFERENCES "PUSHMAGIC"."USERGROUPS" ("GROUPID") ENABLE,
       CONSTRAINT "USERS_ROLEID_FK" FOREIGN KEY ("ROLEID")
       REFERENCES "PUSHMAGIC"."USERROLES" ("ROLEID") ENABLE
       ) ;
      


      Here is the error from JBoss:

      ObjectName: persistence.units:jar=pushMagic.jar,unitName=pushMagic
       State: FAILED
       Reason: org.hibernate.AnnotationException: mappedBy reference an unknown prope
      rty: com.rim.pushMagic.entity.User.USERROLE in com.rim.pushMagic.entity.UserRole
      .USERROLE
       I Depend On:
       jboss.jca:service=ManagedConnectionFactory,name=PushMagicDS
       Depends On Me:
       jboss.j2ee:jar=pushMagic.jar,name=UserManagerBean,service=EJB3
      
      ObjectName: jboss.j2ee:jar=pushMagic.jar,name=UserManagerBean,service=EJB3
       State: NOTYETINSTALLED
       I Depend On:
       persistence.units:jar=pushMagic.jar,unitName=pushMagic
      
      --- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
      ObjectName: persistence.units:jar=pushMagic.jar,unitName=pushMagic
       State: FAILED
       Reason: org.hibernate.AnnotationException: mappedBy reference an unknown prope
      rty: com.rim.pushMagic.entity.User.USERROLE in com.rim.pushMagic.entity.UserRole
      .USERROLE
       I Depend On:
       jboss.jca:service=ManagedConnectionFactory,name=PushMagicDS
       Depends On Me:
       jboss.j2ee:jar=pushMagic.jar,name=UserManagerBean,service=EJB3