[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] none of the @OneToMany fields are being persisted in an @Embeddable class
|
On 2011-06 -22, at 13:47, James Sutherland wrote:
>
> Can you include the code you use to persist the object, and the log on finest
> of the transaction.
I have submitted this as a bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=349483 and included a test case as an attachment to this bug.
>
> Do any errors or warnings occur on startup?
No - and note that eclipselink has no problem creating the table structure - it is just silently fails to persist the fields.
create table Container (
id integer not null auto_increment,
simple varchar(255),
incnt varchar(255),
primary key (id)
);
create table Many (
id integer not null auto_increment,
name varchar(255),
other integer not null,
CONT_IDENTIFIER integer,
primary key (id)
);
alter table Many
add index FK247A7F38FF7A25 (CONT_IDENTIFIER),
add constraint FK247A7F38FF7A25
foreign key (CONT_IDENTIFIER)
references Container (id);
>
> It is odd to have a OneToMany in an Embeddable as they have no id, and note
> that the embeddable is not mapping the ID column that is being used in the
> join.
Surely the point of the embeddable is that it has the id of the object in which it is embedded - I can see nothing wrong logically with what I am trying to do - though I admit that it is a fairly advanced usage... The embeddable is not mapping the id column because it is the "many" side that is using a foreign key.
>
> If you move the OneToMany to the parent, or change it to use a JoinTable
> instead of a JoinColumn does it work?
>
the OneToMany works fine in the parent - using a JoinTable in the embeddable does not work either.
>
>
> Paul Harrison-8 wrote:
>>
>> Hi,
>>
>> I have a problem using eclipselink 2.2.0 in that none of the @OneToMany
>> fields are being persisted in and @Embeddable class. The partial source is
>> below with Container being the container class for the Emb class - The
>> tables are created as I would expect, but on trying to persist a Container
>> object none of Many objects are written to the database. Is this a bug or
>> am I doing something wrong?
>>
>> @Entity
>> public class Container implements Serializable {
>>
>> @Id
>> @GeneratedValue
>> private int id;
>> private String incnt;
>> @Embedded
>> private Emb em;
>> }
>>
>> @Embeddable
>> public class Emb implements Serializable {
>>
>>
>> protected String simple;
>>
>> @JoinColumn(name = "CONT_IDENTIFIER", referencedColumnName = "ID")
>> @OneToMany(cascade = PERSIST, orphanRemoval = false)
>> protected List<Many> lots;
>> }
>>
>> @Entity
>> public class Many implements Serializable {
>>
>> @Id
>> @GeneratedValue
>> protected int id;
>> protected String name;
>> protected int other;
>>
>> }
>>
>>
>
>
> -----
> http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
> http://www.eclipse.org/eclipselink/
> EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
> TopLink
> Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
> http://wiki.oracle.com/page/TopLink TopLink
> Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
> http://www.nabble.com/EclipseLink-f26430.html EclipseLink
> Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
> Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
> Performance
> --
> View this message in context: http://old.nabble.com/none-of-the-%40OneToMany-fields-are-being-persisted-in-an-%40Embeddable-class-tp31851258p31902914.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