Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Entity relationship issue

The CpUser entity is the parent and the CpMsg object is the child in the one
to many relationship.
CpUser is populated using a call to a stored procedure in a SQL Server DB

CpMsg object represents this table in a AS400 db -
CP_MSG
(
   MSG_ID decimal(11,0) PRIMARY KEY NOT NULL,
   POLICY_NBR varchar(20),
   USER_ID varchar(20) NOT NULL,
   MSG_TIME timestamp NOT NULL,
   MSG_TYPE varchar(5),
   MSG_TEXT varchar(255) NOT NULL
)

The userid in CpUser and the USER_ID in CpMsg is what links the CpUser to
the CpMsg entities.

Thanks for the reply.
Kevin



Guy Pelletier wrote:
> 
> Kevin,
> 
> What does your model look like exactly to get this? Are you purposely
> trying 
> to use a uni-directional 1-M using a JoinTable? Because what I am seeing 
> would indicate that there is no mappedBy value specified on the 1-M.
> 
> Cheers,
> Guy
> 
> ----- Original Message ----- 
> From: "khaskett" <khaskett@xxxxxxxxxxx>
> To: <eclipselink-users@xxxxxxxxxxx>
> Sent: Wednesday, December 03, 2008 8:49 AM
> Subject: Re: [eclipselink-users] Entity relationship issue
> 
> 
>>
>> I added that and I still get this error -
>> [IBM][SQLServer JDBC Driver][SQLServer]Invalid object name 
>> 'CPUSER_CP_MSG'.
>> Call: SELECT t1.MSG_ID, t1.MSG_TEXT, t1.CPUSER_paramUserID FROM
>> CPUSER_CP_MSG t0, CP_MSG t1 WHERE ((t0.CpUser_paramUserID = ?) AND
>> (t1.MSG_ID = t0.messages_MSG_ID))
>> bind => [USER123       ]
>>
>> I guess what I thought would happen is this call
>> SELECT t1.MSG_ID, t1.MSG_TEXT, t1.CPUSER_paramUserID FROM CPUSER_CP_MSG 
>> t0,
>> CP_MSG t1 WHERE t1.USER_ID = ?
>>
>> Thanks for reply.
>> Kevin
>>
>>
>> Tim Hollosy wrote:
>>>
>>> You forgot the mappedBy attribute in your @ManyToOne annotation it
>>> should be @ManyToOne(fetch = FetchType.LAZY,mappedBy="messages")
>>>
>>> You might try to generate your Entities using the Dali JPA Tools in
>>> Eclipse to see the proper way to do these mappings.
>>>
>>> ./tch
>>>
>>>
>>>
>>> On Tue, Dec 2, 2008 at 11:59 PM, khaskett <khaskett@xxxxxxxxxxx> wrote:
>>>>
>>>> I added the @ManyToOne and i still get the same error -
>>>>
>>>> public class CpUser extends BaseDomain {
>>>> ....
>>>>    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, 
>>>> mappedBy
>>>> =
>>>> "cpUser")
>>>>    @JoinColumn(referencedColumnName = "USER_ID")
>>>>    public Set<CpMsg> getMessages() {
>>>>        return messages;
>>>>    }
>>>>
>>>> public class CpMsg extends BaseDomain {
>>>> ....
>>>>    @ManyToOne(fetch = FetchType.LAZY)
>>>>        public CpUser getCpUser() {
>>>>                return this.cpUser;
>>>>        }
>>>>
>>>> Thanks for the reply.
>>>>
>>>>
>>>> Tim Hollosy wrote:
>>>>>
>>>>> It doesn't look like your relationship is defined in both entities. In
>>>>> JPA you always need to make sure you do this. You need to have the
>>>>> @ManyToOne annotation back in your CpMsg entity.
>>>>>
>>>>> Check: http://en.wikibooks.org/wiki/Java_Persistence/OneToMany
>>>>>
>>>>> for more info.
>>>>> ./tch
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Dec 2, 2008 at 6:20 PM, khaskett <khaskett@xxxxxxxxxxx> wrote:
>>>>>>
>>>>>> 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
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/Entity-relationship-issue-tp20803337p20803337.html
>>>>>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>>>>>
>>>>>> _______________________________________________
>>>>>> eclipselink-users mailing list
>>>>>> eclipselink-users@xxxxxxxxxxx
>>>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>>>>
>>>>> _______________________________________________
>>>>> eclipselink-users mailing list
>>>>> eclipselink-users@xxxxxxxxxxx
>>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/Entity-relationship-issue-tp20803337p20806849.html
>>>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>>>
>>>> _______________________________________________
>>>> eclipselink-users mailing list
>>>> eclipselink-users@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>>
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>>
>>
>> -- 
>> View this message in context: 
>> http://www.nabble.com/Entity-relationship-issue-tp20803337p20813256.html
>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>> 
> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Entity-relationship-issue-tp20803337p20814607.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top