Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Unidirectional @OneToMany: is it possible with not nullable foreign key?

Card object can't exist without the corresponding Transaction object.
That means Card is not an independent object (Entity) but rather an owned object (Embeddable),
so OneToMany can't be used (the target must be an Entity).
 
I would define Card as Embeddable and use ElementCollection:
 
@Entity
@Table(name = "TRANS", schema="TEST")
public class TransactionType {
 
...
 
        @ElementCollection()
        @CollectionTable(name = "CARD", schema="TEST", @JoinColumn(name="TRANS_ID"))

        @AttributeOverrides({

            @AttributeOverride(name="a", column=@Column(name="URN"),

            @AttributeOverride(name="b", column=@Column(name="NUMBER"),

        })

        public java.util.Set<Card> getCards() {
                return cards;
        }
}
 
@Embeddable
public class CardUseTypeJAXB {
int a;
int b;
…
}
----- Original Message -----
Sent: Wednesday, July 15, 2009 1:49 PM
Subject: [eclipselink-users] Unidirectional @OneToMany: is it possible with not nullable foreign key?

Hello,
 
I have a problem to use unidirectional OneToMany in case if foreign key in second table is not nullable.
 
Sample:
Entities Transaction and Card are related as OneToMany:
 
@Entity
@Table(name = "TRANS", schema="TEST")
public class TransactionType {
 
...
 
        @OneToMany(cascade = CascadeType.ALL)
        @JoinColumn(name="TRANS_ID")
        public java.util.Set<Card> getCards() {
                return cards;
        }
}
 
@Entity
@Table(name = "CARD", schema="TEST")
public class CardUseTypeJAXB {
…
}
 
The problem is that TRANS_ID column in CARD table is not nullable.
Eclipse Link generates three SQL statements:
1) INSERT INTO TEST.TRANS (URN, NAME) VALUES (?, ?)
     bind => [28, 0000001Z]
2) INSERT INTO TEST.CARD (URN, NUMBER) VALUES (?, ?)
  bind => [6, 12345]
3) UPDATE TEST.CARD SET TRANS_ID ? WHERE (URN = ?)
 
The third statements throws exception if TRANS_ID column is not nullable: Column 'TRANS_ID' doesn't accept Null value. (with nullable column all works fine).
Unfortunately I cannot change the DB schema.
Is there any way to solve this problem?
 
Regards,
Andrei.
 


_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Back to the top