mappedBy reference an unknown property
dahunter Sep 12, 2006 4:37 PMHi,
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