3 Replies Latest reply on Jan 25, 2007 9:58 AM by Alex Grönholm

    How to handle several collections, which store the same enti

    Toni Beckman Novice

      Hi,

      I have an EmailMessage Entity, which contains four collections, which all reference the same type of entity bean, which in my case represents an EmailAddress.

      So I have an EmailMessage and inside 4 collections, all of which in turn store EmailAddress Entities for the email fields to, cc, bcc and replyTo.

      I looked in the database and the table for the relationship looks like this:

      --------- emailmessage_emailaddress ----------------
      emailmessage_id bigint NOT NULL

      replyto_id bigint NOT NULL
      bcc_id bigint NOT NULL
      cc_id bigint NOT NULL
      to_id bigint NOT NULL
      -------------------------------------------------------------

      If I create an EmailMessage and add one EmailAddress entity bean to one of the collections, then I get a contraint exception, because the "NOT NULL" constraint is violated.

      How, can I set this up, so that this works? Is this possible at all?

      Here are the 2 entity beans:

      -------------------------------------------------

      @Entity
      @Name("emailMessage")

      public class EmailMessage implements Serializable
      {
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      long id;

      @OneToOne(cascade = {CascadeType.ALL})
      EmailAddress from;

      @OneToMany(cascade = {CascadeType.ALL})
      Collection to = new ArrayList();

      @Temporal(TemporalType.TIMESTAMP)
      Date sentDate;

      @OneToMany(cascade = {CascadeType.ALL})
      Collection cc = new ArrayList();

      @OneToMany(cascade = {CascadeType.ALL})
      Collection bcc = new ArrayList();

      @OneToMany(cascade = {CascadeType.ALL})
      Collection replyTo = new ArrayList();

      ...
      }

      ------------------------------------------------------------

      @Entity
      @Name("emailAddress")

      public class EmailAddress implements Serializable
      {
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      long id;

      String emailAddress;
      String name;
      ...
      }