[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[List Home]
|
Re: [eclipselink-users] Entity relationship issue
|
- From: "Tim Hollosy" <hollosyt@xxxxxxxxx>
- Date: Wed, 3 Dec 2008 06:04:46 -0500
- Delivered-to: eclipselink-users@eclipse.org
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=YJbYexp/c5COjB3vz9xio1kfFIjINbMLKc7lf8OBaZM=; b=c3dG4/GFds7MvzuZBLKO6a/4xXk9BHEW2WumLi89hk2Vzn4Yj6PhkqIDehdhgNJzNx +TgbVkiIRxlfhWpKxQFXytUJ3zt4cNArMDVu6HAktEYRaON9lBxzXtp1VfsqohPTanni /B+0VBdcRoQgFICdwS3kcFMrKa53hZmfgBadk=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=kfMiGfsBH4LwMhKzBU9mt8Ai6M6pepIyhEwU26q7vICAImN8xol2hCZb/aMeX9pwoc AfKecvKJS/kSswNDt8k9RtlqGFSusvsrWcoSQIqE8h0dUznoTw7khfOs2H+6s3KYfOt/ nSnbDWoZ8lKwkv0fk56KOBMen7auUtxE9RzWw=
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
>