[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] @Embeddable and @mapsId
|
Hello Luke,
Yes mapsId can be used, but your primary key for B is set up wrong for
it to be used. Please review the specification, as it shows in the
examples that B's ID either needs to be A's id or contain it. Ie:
public class B {
@EmbeddedId APK id;
OR
@Embeddable
public class BPK {
APK aId;
Mapsid would then refer to id or aId depending on the situation. Why
are you attempting this with an embeddable object, and did you get the
previous situation working? You might want to
try a less complex object model first and verify that it is working
before moving onto derrived ids - for instance, B and SubjectFile seem
to both use an id field that could be used as a unique primary key (bid
and fileTpId),
rather than be used as a component of a composite pk.
Regards,
Chris
luke2010 wrote:
here is one scenario
there are two entity A, B, A has PK class APK including aId, bId, B has BPK
class including aId, bId as well. they have oneToone relationship. Can I use
annotation @MapsId on @OnetoOne relationship on entity B?
==========================
// parent entity has simple primary key
@Entity
public class A {
@EmbeddedId APK id;
...
@OneToOne(optional=false, mappedBy="a", cascade = ALL, targetEntity =
B.class)
@PrivateOwned
private B b;
...
}
@Entity
public class B {
@EmbeddedId BPK id;
...
@OneToOne(optional = false)
@JoinColumns({
@JoinColumn(name="A_ID", referencedColumnName="A_ID"),
@JoinColumn(name="B_ID", referencedColumnName="B_ID"),
})
@MapsId ??????
private A a;
}
@Embeddable
public class BPK {
@Column(name="A_ID")
int aId name;
@Column(name="B_ID")
long bId;
}
======================================