[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] JPA Mapping - OneToMany (EclipseLink 1.02 , 1.1)
|
PKEY is the column name where as the mappedBy value looks for the attribute
name, that is, 'pkey'.
Cheers,
Guy
----- Original Message -----
From: "Tim Hollosy" <hollosyt@xxxxxxxxx>
To: "EclipseLink User Discussions" <eclipselink-users@xxxxxxxxxxx>
Sent: Monday, January 12, 2009 8:01 AM
Subject: Re: [eclipselink-users] JPA Mapping - OneToMany (EclipseLink 1.02
,1.1)
Maybe I'm missing something, but this is how I do @OneToMany's
In your Person:
@OneToMany(mappedBy="PKEY")
private List<Phone> phoneList;
In Phone:
@ManyToOne
@JoinColumn(name="PKEY")
private Person pkey;
Why wouldn't this work?
./tch
On Mon, Jan 12, 2009 at 6:47 AM, Robert Lalyko <robert.lalyko@xxxxxxxxx>
wrote:
Hi,
by using the EclipseLink JPA annotation mapping I have had problems to
create an unidirectional one-to-many mapping:
The entity 'Person' contains the attribute 'phoneList' (entity: Phone).
The 'PHONE' database table contains the column 'PKEY' to refer the
'Person'
entity/table,
but I won't have an attribute in the entity 'Phone' to refer the
'Person' entity.
(There should be only an unidirectional one-to-many relationship without
a
join table .)
If I don't use a join table, the eclipse compiler return the error
message:
Join table "PERSON_PHONE" cannot be
resolved Person.java AddressBook-JPA/src/org/addressbook/data line 49 JPA
Problem Marker
I tried to define this mapping by using EclipseLink 1.02 and 1.1 current
snapshot.
I found a tricky solution for this problem by using the target table to
join
.
@JoinTable(name="PHONE",schema="ADDRESSBOOK", joinColumns =
{@JoinColumn(name="PKEY", referencedColumnName = "PKEY")},
inverseJoinColumns = @JoinColumn(name="PHKEY", referencedColumnName =
"PHKEY"))
But this produces a double select query of the target table:
SELECT t1.PHKEY, t1.ARCODE, t1.PHNBR, t1.PHCCODE, t1.TCODE
FROM ADDRESSBOOK.PHONE t0, ADDRESSBOOK.PHONE t1
WHERE ((t0.PKEY = ?) AND (t1.PHKEY = t0.PHKEY))
And finally I have problems to persist the data, cause EclipseLink tries
to
insert join
table records. (org.eclipse.persistence.exceptions.DatabaseException by
'Insert JoinTable Exception')
DataModifyQuery(sql="INSERT INTO ADDRESSBOOK.PHONE (PHKEY, PKEY) VALUES
(?,
?)")
So this isn't a useful way to define a one-to-many mappings ...
At the EclipseLink site I found an article (JPA2.0 issue) about
'unidirectional one-to-many'.
? Is the unidirectional one-to-many JPA mapping without @JoinTable not
available by JPA 1.0 really?
? Will there be the support of a JPA mapping with target tables by
EclipseLink 1.1 (Release)?
Thanks,
Robert
_______________________________________________
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