0 Replies Latest reply on Oct 14, 2008 6:59 PM by fbarth

    composite key problem

    fbarth

      Hi there!
      I'm having some problems dealing with composite keys.


      The mapping between entities and database tables is working afaik.


      Entity;


      public class RecLocationAssoc {
      
           @EmbeddedId
           RecLocationAssocId id = new RecLocationAssocId();
      
           @ManyToOne
           @JoinColumn(name = "LOCATION_ID", insertable = false, updatable = false)
           private Location location;
           @ManyToOne
           @JoinColumn(name = "USER_ID", insertable = false, updatable = false)
           private User user;
      (...)
      }



      ID-class:


      @Embeddable
      public class RecLocationAssocId implements Serializable{
           
           @Column(name = "USER_ID")
           private Long userId;
           
           @Column(name = "LOCATION_ID")
           private Long locationId;



      The resulting association table looks like this:



      +-------------+------------+------+-----+---------+-------+
      | Field       | Type       | Null | Key | Default | Extra |
      +-------------+------------+------+-----+---------+-------+
      | USER_ID     | bigint(20) | NO   | PRI |         |       | 
      | LOCATION_ID | bigint(20) | NO   | PRI |         |       | 
      | active      | bit(1)     | NO   |     |         |       | 
      +-------------+------------+------+-----+---------+-------+



      When trying to insert an entity into the table, the database returns an error, stating that USERID cannot be null. I tried to insert entities into the table using an EntityHome and the EntityManager with no success.


      My guess would be, that the mapping between the embeddedId and the database-tables fails and therefore USERID is not set although it should so.


      Has anyone encountered similar problems? Any suggestion on how to solve this problem?


      Thank you,
      Florian