« Return to Thread: Entity relationship issue

Entity relationship issue

by khaskett :: Rate this Message:

Reply to Author | View in Thread

I am having an issue with creating a relationship between 2 entities, where the parent entity was created from a Stored Procedure. When I try to use the @OneToMany annotation it tries to join the two entities.

@Entity
public class CpUser extends BaseDomain {

    // Attributes
    @Id
    @Column(name = "paramUserID")
    private String userId;

    @Column(name = "paramInitials")
    private String initials;

    @Column(name = "paramFirstName")
    private String firstName;

    @Column(name = "paramLastName")
    private String lastName;

     .....

    /*
     * List of user messages
     */
    private Set<CpMsg> messages = new HashSet<CpMsg>(0);

   .....
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "userId")
    public Set<CpMsg> getMessages() {
        return messages;
    }
}  // End CpUser

@Entity
@Table(name = "CP_MSG")
public class CpMsg extends BaseDomain {

        // Fields
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "MSG_ID", unique = true, nullable = false, precision = 11, scale = 0)
        private Long msgId;
        @Column(name = "MSG_TEXT", nullable = false)
        private String msgText;

        private CpUser cpUser;
    ....
        public CpUser getCpUser() {
                return this.cpUser;
        }
} //End CpMsg

I removed some fields for brevity.
When I try and get the messages for that user by calling getMessages() I get this in the logs -
Call: SELECT t1.MSG_ID, t1.MSG_TEXT, t1.USER_ID FROM CPUSER_CP_MSG t0, CP_MSG t1 WHERE ((t0.CpUser_paramUserID = ?) AND (t1.MSG_ID = t0.messages_MSG_ID))
        bind => [USER123]

And the error is that CPUSER_CP_MSG doesnt exist, which is correct.

I guess I assumed it would just do a select on the child table passing in the value from the parent.

Thanks in advance

 « Return to Thread: Entity relationship issue