[
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.