title: Java EE - One to many bidirectional
body: <p>To my understanding a Unidirectional one-to-many relationship has a join table and a Bidirectional one-to-many relationship hasn't.</p>
  
  <p>My application works when I implemented the Unidirectional relationship but I can't seem to get it to work for the bidirectional relationship.</p>
  
  <p>These are the tables I am creating</p>
  
  <pre><code>CREATE TABLE CUSTOMER (customerNo INTEGER PRIMARY KEY, joinDate DATE, customerName VARCHAR2(20));
  
  CREATE TABLE BOOKING (bookingNo INTEGER PRIMARY KEY, bookedDate DATE, custNo INTEGER, itemNo NUMBER(10), itemName VARCHAR2(20), quantity NUMBER(5), bookingDate DATE, bookingValue NUMBER(8, 2), constraint booking_fk foreign key (custNo) references customer(customerNo));
  </code></pre>
  
  <p>My first class</p>
  
  <pre><code>  public class Booking implementes Serializable{
    private Timestamp bookeddate;
        private Timestamp bookingdate;
  
    @Id()
     @GeneratedValue(generator"MY_SEQ_GEN")
     @SequenceGenerator(name="MY_SEQ_GEN", sequenceName="MY_SEQUENCE", allocationSize=1)
     @Column(name="bookingNo", nullable=false)
    private Long bookingno;
    private Double bookingvalue;
  
    @Column(length = 20)
    private String itemname;
    private Long itemno;
    private Long quantity;
  
    private Customer customer;
  
    @ManyToOne
    public Customer getCustomer() {
      return customer;
    }
  
    ...
  </code></pre>
  
  <p>my other class</p>
  
  <pre><code>  public class Customer implements Serializable {
    @Column(length = 20)
    private String customername;
    @Id()
       @GeneratedValue(generator="THE_SEQ_GEN")
       @SequenceGenerator(name="THE_SEQ_GEN", sequenceName="THE_SEQUENCE", allocationSize=1)
       @Column(name="customerNo", nullable=false)
    private Long customerno;
    private Timestamp joindate;
  
    @OneToMany(cascade=(CascadeType.ALL), fetch=FetchType.EAGER, mappedBy = "customer")
    private List&lt;Booking&gt; bookings = new ArrayList&lt;Booking&gt;();
  
    public List&lt;Booking&gt; getBookings() {
        return bookings;
      }
  </code></pre>
  
  <p>my bean falls over after I run this method</p>
  
  <pre><code>public void addBooking(Long custno, Long tickno, Long quantity) { 
      Customer cust = (Customer) em.createNamedQuery("findCustomerByPrimaryKey").setParameter("eid", custno).getSingleResult();
      Booking b = new Booking();
  
          b.setBookeddate(new Timestamp(System.currentTimeMillis()));
  
          b.setCustomer(cust);
  
          b.setTicket((Ticket) em.createNamedQuery("findTicketByPrimaryKey").setParameter("eid", tickno).getSingleResult(), quantity);
  
          cust.addBooking(b);
  
          //persistBooking(b);
    }
  </code></pre>
  
  <p>And this is my error message.</p>
  
  <pre><code>javax.ejb.EJBException: BEA1-001D72BA69DC9E472B1E: Local Exception Stack: 
  Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.DatabaseException
  Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00904: "CUSTOMER_CUSTOMERNO": invalid identifier
  
  Error Code: 904
  Call: INSERT INTO BOOKING (bookingNo, ITEMNAME, BOOKINGDATE, BOOKINGVALUE, ITEMNO, QUANTITY, BOOKEDDATE, CUSTOMER_customerNo) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
      bind =&gt; [71, Metallica, 2011-01-05 22:07:17.788, 200.0, 420, 2, 2011-01-05 22:07:17.788, 1526]
  Query: InsertObjectQuery(courseworkone.Booking@201a41)
      at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:801)
  </code></pre>